Asp.net mvc 为什么模型会自动传递到局部视图?

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

我创建了一个新的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)

我找不到关于这种行为的文件。如何防止该模型被传递到局部视图。当然,这种行为并不重要,但我发现一些开发人员在部分视图中使用了模型属性。

当您在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)