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

时间:2016-05-07 13:40:15

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我是ASP.NET MVC的新手。我无法清楚地理解

之间的区别
  

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

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

提前致谢!!!

1 个答案:

答案 0 :(得分:6)

  

强类型视图

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

public class MyViewModel
{
    public string SomeProperty { get; set; }
}

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

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

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

@model MyViewModel
...
<div>@Model.SomeProperty</div>
  

部分视图

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

@model AddressViewModel
<div>Street: @Model.Street</div>
<div>Country: @Model.Country</div>

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

@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>
  

动态类型视图

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

public ActionResult Index()
{
    ViewBag["SomeProperty"] = "some property value";
    return View();
}

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

<div>@ViewBag["SomeProperty"]</div>