在ASP.NET MVC中禁用布局?

Aar*_*sen 49 asp.net-mvc

在MonoRail中,您可以只使用CancelLayout()来呈现布局.在ASP.NET MVC中,影响布局的唯一方法似乎是将布局名称传递给View("myview","mylayout")等View()方法; 只是看起来传递null或空字符串不能做我想要的.

我最终创建了一个只渲染内容的空布局,但这看起来很傻.

"不渲染布局"就是指.在Web窗体视图引擎中,它们将布局称为"母版页".我想渲染只是我的行为的观点,而不是与母版页围绕着它.

小智 83

在MVC 3中,您可以使用以下命令删除主布局代码:

   @{
    Layout = "";    
    }
Run Code Online (Sandbox Code Playgroud)


ber*_*nsu 62

在视图的开头添加:

@{
    Layout = null;
}
Run Code Online (Sandbox Code Playgroud)

如果要保留样式表,则需要在该视图中添加对它的引用.


Chr*_*row 12

要为所有页面禁用此功能,请编辑_ViewStart.cshtml(在根目录下,在"Views"文件夹下),并确保它包含以下内容:

@{
  Layout = null;
}
Run Code Online (Sandbox Code Playgroud)

要为任何特定视图启用模板,可以将以下内容添加到该视图的.cshtml文件中,以启用模板:

@{
  Layout = "~/Views/Shared/_Layout.cshtml";
}
Run Code Online (Sandbox Code Playgroud)


小智 11

在Controller操作中,我们可以设置所需的布局.

return View("Index", "_LAYOUT_NAME", model);
Run Code Online (Sandbox Code Playgroud)

/sf/answers/361296911/


LAT*_*T94 8

我在正确的答案中看到它说“这在 ASP.NET MVC 版本中似乎是不可能的”

您使用的是哪个版本?因为我找到了您的问题的解决方案(我遇到了同样的问题)

因此,要在页面中禁用布局,您应该使用:

@{
   Layout = null;
}
Run Code Online (Sandbox Code Playgroud)

而且,正如这里所建议的,这可以解决您的问题:

public ActionResult Index()
{
  SampleModel model = new SampleModel();
  //Any Logic
  return View("Index", "_WebmasterLayout", model);
}
Run Code Online (Sandbox Code Playgroud)


Fen*_*ton 6

而不是使用普通视图,创建局部视图.然后可以单独使用它们,它的行为与CancelLayout()非常相似 - 或者您可以将它们合并到引用母版页的视图中,在这种情况下它将是完整的布局.如果要发送回部分HTML块以响应AJAX请求,它们也很有用.


Aar*_*sen 3

这在我询问的 ASP.NET MVC 版本中似乎是不可能的。