1

我有一个与 BasicInfoModel 关联的 partialView _BasicInfoPartView。此部分视图包含一些输入和下拉列表:

public class BasicInfoModel 
{       public string Name { get; set; }
        public string selectedRubric { get; set; }
        public IEnumerable<SelectListItem> Rubrics { get; set; }
}

部分 _BasicInfoPartView.cshtml

@model ProjectZeroWebSite.Models.PleGroupModel
@Html.ListBoxFor(m => m.selectedRubric, @Model.Rubrics })
@Html.TextBoxFor(m => m.Name )

可以在任何页面中的 FORM 中调用此局部视图。只需在页面模型中添加 BasicInfoModel 即可。

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

随机页面.cshtml

@using (Html.BeginForm())
{
    @Html.Partial("_BasicInfoPartView ", @Model.BasicInfoModel)
    @Html.TextBoxFor(m => m.info2)
    ...
    <input type="submit"  />
}

现在的问题是:我可以毫无问题地填充页面。但是当我尝试从模型中检索控制器中的信息时: RandomPageModel.info2 OK!RandomPageModel.BasicInfoModel 为空...

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

提前谢谢。

小酒馆。

4

1 回答 1

4

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

所以你定义了一个 editorTemplate (强类型)

@model BasicInfoModel

@Html.ListBoxFor(m => m.selectedRubric, @Model.Rubrics })
@Html.TextBoxFor(m => m.Name )

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

~/Views/Shared/EditorTemplates/BasicInfoModel.cshtml

然后换掉这条线

@Html.Partial("_BasicInfoPartView ", @Model.BasicInfoModel)

对于这个

@Html.EditorFor(m => m.BasicInfoModel)
于 2013-03-12T17:01:59.757 回答