Asp.net mvc 3 表格mvc3-局部观察柱

Asp.net mvc 3 表格mvc3-局部观察柱,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我有一个partialView\u BasicInfo PartView与BasicInfo模型的关联。 此partialview包含一些输入和下拉列表,如下所示: public class BasicInfoModel { public string Name { get; set; } public string selectedRubric { get; set; } public IEnumerable<SelectListItem&g

我有一个partialView\u BasicInfo PartView与BasicInfo模型的关联。 此partialview包含一些输入和下拉列表,如下所示:

public class BasicInfoModel 
{       public string Name { get; set; }
        public string selectedRubric { get; set; }
        public IEnumerable<SelectListItem> Rubrics { get; set; }
}
可以在任何页面的表单中调用此partialview。只需要在页面模型中添加BasicInfo模型

public class RandomPageModel
{
        public basicInfoModel { get; set; }
        public string info2{ get; set; }
        ...
        public RandomPageModel()
        { this.basicInfoModel = new basicInfoModel ();}
}
RandomPage.cshtml

@using (Html.BeginForm())
{
    @Html.Partial("_BasicInfoPartView ", @Model.BasicInfoModel)
    @Html.TextBoxFor(m => m.info2)
    ...
    <input type="submit"  />
}
@使用(Html.BeginForm())
{
@Html.Partial(“_BasicInfoPartView”,@Model.BasicInfoModel)
@Html.TextBoxFor(m=>m.info2)
...
}
现在的问题是: 我可以毫无问题地填充页面。 但当我尝试从模型检索控制器中的信息时: RandomPageModel.info2好的! RandomPageModel.BasicInfo模型为空

我想我无法理解数据绑定的概念:s 我这样做是因为我不想让小的JS函数使我的页面过载,也不喜欢复制表单的想法(代码维护)

提前谢谢


Cantinos。

在这种情况下,您需要使用编辑器模板,而不是局部视图

因此您定义了一个editorTemplate(强类型)

将此编辑器模板命名为与模型相同的名称,并将其放入共享视图文件夹中名为EditorTemplates的文件夹中

~/Views/Shared/EditorTemplates/BasicInfoModel.cshtml

然后换掉这条线

@Html.Partial("_BasicInfoPartView ", @Model.BasicInfoModel)
为了这个

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

在这种情况下,需要使用编辑器模板而不是局部视图

因此您定义了一个editorTemplate(强类型)

将此编辑器模板命名为与模型相同的名称,并将其放入共享视图文件夹中名为EditorTemplates的文件夹中

~/Views/Shared/EditorTemplates/BasicInfoModel.cshtml

然后换掉这条线

@Html.Partial("_BasicInfoPartView ", @Model.BasicInfoModel)
为了这个

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

您可以去掉编辑器模板名称中的“ux”,使用@Html.EditorFor(m=>m.BasicInfoModel)谢谢您的回答!它可以工作,但我需要将@Html.EditorFor(m=>m.BasicInfoModel,“BasicInfoPartView”)放入,因为他找到了视图是的,如果模板的名称与模型的名称不同,则必须提供该名称作为第二个参数。很高兴你成功了!您可以去掉编辑器模板名称中的“ux”,使用@Html.EditorFor(m=>m.BasicInfoModel)谢谢您的回答!它可以工作,但我需要将@Html.EditorFor(m=>m.BasicInfoModel,“BasicInfoPartView”)放入,因为他找到了视图是的,如果模板的名称与模型的名称不同,则必须提供该名称作为第二个参数。很高兴你成功了!