我创建了一个新的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 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)
我无法找到有关此行为的文档。如何防止该模型传递到局部视图。这种行为并不重要,但我发现有些开发人员在部分视图中使用了Model属性。
答案 0 :(得分:2)
当您将模型传递给GET方法中的视图时,会创建ViewDataDictionary并将其Model
属性设置为模型的值(在您的情况下为MyModel
),反过来又分配给HtmlHelper.ViewData
属性。
默认情况下,如果您在使用@Html.Partial()
时未指定模型,则会将当前ViewDataDictionary
传递给部分内容(请参阅source code for PartialExtensions,然后调用RenderPartialInternal
} HtmlHelper)
如果您想传递null
模型,则需要使用传递新ViewDataDictionary
@Html.Partial("_Partial1", new ViewDataDictionary())
或者如果你想传递不同的模型
@Html.Partial("_Partial1", new AnotherModel())
或
@Html.Partial("_Partial1", Model.SomeProperty)
请注意,在最后一种情况下,如果SomeProperty
为null
,则视图中的模型将传递给部分。