渲染局部视图的方法

时间:2014-06-04 07:13:03

标签: asp.net-mvc methods partial-views

我有一个partialView,我只想在用户登录时呈现。 我在想这样的事情:

查看:

@Html.ActionLink("Text", "Method", "Controller")



<section id="events">

    @Html.Partial("_CreateNewPost")

</section>

控制器:

    [Authorize]
    public ActionResult Method()
    {

        Code that renders the PartialView
        return View();
    }

这样,我会假设未登录的用户将被发送到登录页面。 谢谢!

编辑: 所以我想知道是否可以在渲染局部视图的方法中创建代码。 现在的方式是,只要页面加载就会呈现局部视图。

3 个答案:

答案 0 :(得分:1)

您可以使用子操作:

[Authorize]
public ActionResult Method()
{
    return PartialView("_CreateNewPost");
}

然后在你的视图中调用它:

@if(Request.IsAuthenticated)
{
    Html.Action("Method","SomeController")
}

答案 1 :(得分:1)

当然可以。在您的控制器上:

[Authorize]
[ChildActionOnly]
public ActionResult MyPartial()
{
    //Do stuff...
    return PartialView("_partialViewName");
}

然后在你看来:

@Html.Action("MyPartial", "ControllerName")

如果要根据某些条件返回不同的局部视图,或者想要将某些数据(如viewmodel)传递给View,这非常有用。 ChildActionOnly指定此视图仅在从其他视图调用时才可访问,因此您无法在地址栏中键入/ controller / MyPartial。

答案 2 :(得分:0)

@Html.Partial("ViewName")
@{ Html.RenderPartial("ViewName"); }