Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 部分子模型_C#_Asp.net Mvc_Asp.net Mvc 4_Razor - Fatal编程技术网

C# 部分子模型

C# 部分子模型,c#,asp.net-mvc,asp.net-mvc-4,razor,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&g

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

@型号.名称
@Html.Partial(“\u ContactInformation”,Model.ContactInformation)
但是,在
s的
name
属性中呈现的“\u ContactInformation”视图中没有ContactInformation

通常razor会将name属性绑定到以下内容:name=“ContactInformation.Address”。但由于它是一个部分,因此会呈现为name=“Address”


是我遗漏了什么,还是这是它的预期工作方式?

您有两个选择。选项1-明确指定前缀:

@Html.Partial("_ContactInformation", Model.ContactInformation, new ViewDataDictionary
{
    TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "ContactInformation" }
})
选项2是将局部视图转换为模型的编辑器模板,然后使用
EditorFor
helper方法,该方法应该能够为您添加前缀:

@Html.EditorFor(m => m.ContactInformation)

你有两个选择。选项1-明确指定前缀:

@Html.Partial("_ContactInformation", Model.ContactInformation, new ViewDataDictionary
{
    TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "ContactInformation" }
})
选项2是将局部视图转换为模型的编辑器模板,然后使用
EditorFor
helper方法,该方法应该能够为您添加前缀:

@Html.EditorFor(m => m.ContactInformation)

这是工作的预期。视图是自包含的,它们不知道父视图/模型。如果你想让它正常工作,你需要使用而不是
@Html.Partial()
。我认为最新的MVC有更好的方式,但至少这应该会有帮助-@AlexeiLevenkov如果我要进入部分视图(这对于创建编辑器模板输出的东西来说是一种奇怪的方式),我宁愿使用一个接口(这将创建一个漂亮的stronly类型视图)然后创建一个新的编辑器方法,该方法具有一个神奇的字符串。该方法按预期工作。视图是自包含的,它们不知道父视图/模型。如果要使其正常工作,则需要使用而不是
@Html.Partial()
。我认为最新的MVC有更好的方式,但至少这应该会有帮助-@AlexeiLevenkov如果我要进入局部视图(这是一种奇怪的方式,可以创建编辑器模板输出…),我宁愿使用一个接口(创建一个漂亮的stronly类型视图),然后创建一个具有神奇字符串的新编辑器方法。