强类型视图与普通视图与Asp.NET MVC中的部分视图

Osm*_*oni 7 c# asp.net asp.net-mvc razor asp.net-mvc-4

我是ASP.NET MVC的新手.我无法清楚地理解它们之间的区别

强类型视图与普通视图与部分视图与动态类型视图相比

在Asp.NET MVC中.有人形容我这个词.

提前致谢!!!

Dar*_*rov 6

强类型视图

绑定到视图模型的视图.例如,如果您有以下视图模型:

public class MyViewModel
{
    public string SomeProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

由控制器操作传递给视图:

public ActionResult Index()
{
    var model = new MyViewModel();
    model.SomeProperty = "some property value";
    return View(model);
}
Run Code Online (Sandbox Code Playgroud)

强类型视图将@model在顶部指向此视图模型的指令:

@model MyViewModel
...
<div>@Model.SomeProperty</div>
Run Code Online (Sandbox Code Playgroud)

局部视图

视图和部分视图之间的区别在于,部分视图仅包含一些可在普通视图的多个部分中重用的小HTML片段.例如,您可以定义以下部分视图:

@model AddressViewModel
<div>Street: @Model.Street</div>
<div>Country: @Model.Country</div>
Run Code Online (Sandbox Code Playgroud)

然后在主视图中的多个位置渲染此局部视图,以避免反复重复相同的代码:

@model MainViewModel
...
<h3>Personal address</h3>
<div>@Html.Partial("_Address.cshtml", Model.PersonalAddress)</div>

...
<h3>Business address</h3>
<div>@Html.Partial("_Address.cshtml", Model.BusinessAddress)</div>
Run Code Online (Sandbox Code Playgroud)

动态类型视图

没有模型的视图或使用弱类型结构的视图ViewBag.例如,您可以使用控制器操作在以下位置设置一些属性ViewBag:

public ActionResult Index()
{
    ViewBag["SomeProperty"] = "some property value";
    return View();
}
Run Code Online (Sandbox Code Playgroud)

以及您可以使用ViewBag中的相同键访问此属性的相应视图:

<div>@ViewBag["SomeProperty"]</div>
Run Code Online (Sandbox Code Playgroud)