当我在这样的控制器中添加一个新的ActionResult时
public ActionResult Step8(AddPropertyStep7ViewModel model)
{
return View();
}
我需要指定我想要返回的视图类型。{查看布局,视图,部分视图}
我知道我想在下面返回这样的文件
这是Step1.cshtml。如何确定它是某个视图还是部分视图?
@using W.Resources
@model W.Models.ViewModels.Agent.AddPropertyStep1ViewModel
@{
Layout = "~/Areas/Agent/Views/Shared/_Layout.cshtml";
}
<div class="side site--dashboard"> ... <div>
@section scripts
{
<script> ... </script>
}
答案 0 :(得分:1)
定义局部视图的基本方法是它具有Layout = null。
但是
即使您的Layout
属性中有值,也可以从控制器返回如下视图。
return PartialView("Your_view_name");
它仍然会呈现为部分视图(它不会包含在母版页内容中)。
由于MVC按约定优于配置工作,因此定义部分视图的约定是视图名称应以“_”开头(_MyPartialView.cshtml)
正如您在编辑过的问题中所提到的,您需要指定要返回的视图类型。我不需要你只需要返回布局而不需要别的东西。我上面提出的使用操作方法中的return View()
或return PartialView()
的解决方案将完美运行,您可以决定是否要使用母版页或部分视图呈现页面。
答案 1 :(得分:1)
视图是视图是视图。术语“布局”和“部分”只是更容易讨论视图的使用方式,但它们之间没有功能差异。换句话说,布局是用作布局的视图。部分仅仅是用作部分的视图。没有办法只看一个视图并知道它是什么类型的视图,因为它完全是上下文。
也就是说,布局是一种例外,因为为了真正起到布局的作用,他们需要在某处调用@RenderBody()
。但是,您仍然可以使用不将其称为另一个视图的“布局”的视图。它实际上不会呈现视图的HTML:所有返回的都是布局的HTML。
有一种使用下划线为布局/部分添加前缀的约定。但是,这只是一种在项目树中快速查看视图文件有特殊之处的方法。它不是必需的,也不会真正为您提供有关该视图的特殊内容的任何信息。
那就是说,你的问题并不完全清楚。您说您想要指定返回的视图类型,可能来自您的操作。好吧,你实际上已经这样做了。当您返回View()
时,您说您希望视图被视为标准视图。如果您想返回部分内容,则必须返回PartialView()
。但是,没有办法指定返回的视图必须使用布局。