我对MVC Razor中的部分视图有疑问。任何帮助都受到高度赞赏,它最有可能是我错过的东西,但是在搜索时我找不到任何有同样问题被复制的东西。
所以我将视图绑定到视图模型。
public class Person
{
public string Name { get; set; }
public virtual ContactInformation ContactInformation { get; set; }
}
然后我有一个部分的视图来呈现联系信息模型。
<div>
@Model.Name
</div>
<div>
@Html.Partial("_ContactInformation", Model.ContactInformation)
</div>
然而,&#34; _ContactInformation&#34;视图在name
<input>
属性中没有ContactInformation的情况下呈现
通常razor将name属性绑定到类似:name =&#34; ContactInformation.Address&#34;。但是因为它是部分的,所以它被渲染成名称=&#34;地址&#34;。
我是否遗漏了某些东西,或者这是它的预期工作方式?
答案 0 :(得分:5)
您有两种选择。选项1 - 明确指定前缀:
@Html.Partial("_ContactInformation", Model.ContactInformation, new ViewDataDictionary
{
TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "ContactInformation" }
})
选项2是将部分视图转换为模型的编辑器模板,而不是使用EditorFor
辅助方法,它应该能够为您添加前缀:
@Html.EditorFor(m => m.ContactInformation)