Asp.net mvc 为什么模型会自动传递到局部视图?
我创建了一个新的ASP.NET MVC项目(.NET framework 4.5.2)并编辑了HomeController.cs文件:Asp.net mvc 为什么模型会自动传递到局部视图?,asp.net-mvc,razor,Asp.net Mvc,Razor,我创建了一个新的ASP.NET MVC项目(.NET framework 4.5.2)并编辑了HomeController.cs文件: public class MyModel { public int Id { get; set; } public string Test { get; set; } } public class HomeController : Controller { public ActionResult Contact() { MyModel m
public class MyModel
{
public int Id { get; set; }
public string Test { get; set; }
}
public class HomeController : Controller
{
public ActionResult Contact()
{
MyModel model = new MyModel()
{
Id = 34,
Test = "Foo"
};
return View(model);
}
}
Contact.cshtml视图:
@model WebApplication6.Controllers.MyModel
@Html.Partial("_Partial1")
和_Partial1.cshtml文件:
模型将自动传递到局部视图,而无需像这样显式添加:
@Html.Partial("_Partial1", model)
我找不到关于这种行为的文件。如何防止该模型被传递到局部视图。当然,这种行为并不重要,但我发现一些开发人员在部分视图中使用了模型属性。当您在GET方法中将模型传递给视图时,将创建一个,并且其
模型属性设置为模型的值(在您的情况下MyModel
)然后将其分配给HtmlHelper.ViewData
属性
默认情况下,如果在使用@Html.Partial()
时未指定模型,则当前的ViewDataDictionary
将传递给Partial(请参阅,后者依次调用的RenderPartialInternal
)
如果要传递null
模型,则需要使用重载传递新的ViewDataDictionary
@Html.Partial("_Partial1", new ViewDataDictionary())
或者如果你想通过一个不同的模型
@Html.Partial("_Partial1", new AnotherModel())
或
请注意,在最后一种情况下,如果SomeProperty
为null
,则视图中的模型将传递给分部
@Html.Partial("_Partial1", Model.SomeProperty)