【发布时间】:2014-10-13 20:15:15
【问题描述】:
我正在开发一个编辑表单。我需要创建的表单需要是动态的,所以我走上了使用 EditorForModel 的道路,并在后面有许多不同但相似的模型。为了自定义每个字段,我使用 EditorTemplates 进行下拉菜单、复选框和单选按钮等控件。该项目需要尽快交付,我几乎完成了所有工作,但几乎没有做任何事情。
这是我作为 EditorTemplate 的 Sex.cshmt
@Html.RadioButton("", "M") Male
@Html.RadioButton("", "F") Female
编辑视图也没有那么多。
@using (Html.BeginForm("Edit", "Editor", FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.HiddenFor(m => m.Id)
@Html.EditorForModel()
<input type="submit" class="btn btn-default" value="Save" />
}
我得到了一个属性很少的模型。很简单。 Field for Sex 具有 UIHint 注释,以便它可以拾取 Sex 编辑器模板。一些属性也有一些必需的注释。这些工作正常。
我让我的控制器操作返回正确类型的人并使用工厂返回视图。只是一个带有返回正确对象的 switch 语句的标准工厂。
public ActionResult Edit(int p)
{
var person= _service.personService.Get(p);
var canFac = new CandidateFactory(type);
var res = canFac.CreateObject(person);
return PartialView("_Edit", res);
}
在上面的代码中, res 是一个动态创建的具有属性的对象。它有一个 Sex 属性,它是一个值为“M”或“F”的字符串。我自然知道单选按钮是布尔值,但我必须将 M 或 F 映射到单选按钮。
表单生成良好。所有普通的文本框都填充了数据。但是没有填充单选按钮和复选框等其他选项。所以,我的问题是,在我的场景中,如何使用数据预填充或预选单选按钮?
【问题讨论】:
-
我想你的答案可能在这里:stackoverflow.com/questions/18852821/…
-
@OualidKTATA 感谢您的帮助,但答案不使用 EditorTempates .. 不使用 EditorTempate 它对我有用,但我的代码中需要 EditorTemplate。
标签: asp.net-mvc radio-button data-annotations mvc-editor-templates editorformodel