4

当我@RenderBody在视图(不是主体)上使用时,我会收到此消息Error: The file "~/Views/Shared/_Sistema.cshtml" cannot be requested directly because it calls the "RenderBody" method

我不明白,因为我是 MVC 的新手。

我能做什么?

谢谢!

4

3 回答 3

3

RenderBody仅供大师使用。此方法呈现不属于任何特定部分的内容页面的标记。如果您的视图调用RenderBody,则可能有两种情况:

  1. 要么这是一个错误,这种观点不应该称之为。
  2. 或者这个视图是一个主视图,你应该使用一些其他视图继承这个主视图的布局。
于 2013-06-28T15:40:03.780 回答
3

如果您使用的Renderbody是 _Sistema.cshtml 文件,则将其设为布局页面。

并添加另一个名为 MyPartial.cshtml 的部分页面,其布局名称为 _Sistema.cshtml。

Renderbody 应该只在母版页中。即布局页面。

所以你的 _Sistema.cshtml 页面应该只包含以下内容:

@RenderBody()
@RenderSection("scripts", required: false) @*----Optional---*@

然后您的新部分页面 MyPartial.cshtml 应包含以下内容:

@{
    Layout = "~/_Sistema.cshtml";
}

然后在您的视图中使用您的部分页面,如下所示:

@Html.Partial("MyPartial")

希望能帮助到你。

于 2014-03-13T13:00:13.067 回答
2

您只需要与 _ViewStart.cshtml 进行交互

并使用if条件为每组用户指定共享母版页面。例如用户是管理员然后用户 _Layout.cshtm 其他明智使用 _Layout2.cshtml

使用以下代码:

@{
    if(User.Identity.Name.ToLower()=="admin") {
        Layout = "~/Views/Shared/_Layout2.cshtml";
    }
    else {
        Layout = "~/Views/Shared/_Layout.cshtml";
    } 
}
于 2013-08-23T15:43:20.887 回答