MVC Razor Html.Partial子模型

时间:2014-12-01 18:06:43

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

我对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;。

我是否遗漏了某些东西,或者这是它的预期工作方式?

1 个答案:

答案 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)