我有mvc模型:
public class MyModel
{
public int MyInt{ get; set; }
public DateTime MyDateTime{ get; set; }
[UIHint("_DropDown")]
public DropDownListModel<object> MyDropDown { get; set; }
public MyModel()
{
//initialize MyDropDown
}
}
当我在视图中致电@Html.EditorForModel()
时,我正在为MyInt
和MyDateTime
获取编辑。我可以使用MyDropDown
为@Html.EditorFor(m => m.MyDropDown)
添加编辑器。
如何将MyDropDown
的编辑器添加到EditorForModel
?
答案 0 :(得分:0)
我将这个答案作为答案,因为我怀疑它目前是正确的方法,但与任何ASP.NET MVC答案一样,它可能会变得不正确在下一个版本中......
正如您所知, Html.EditorForModel()
只是一个与Html.EditorFor(model => Model)
结果相同的帮助者。我怀疑的当前行为在某种模型上局限于原始类型。方便,但不像你的模型那样强大。
虽然Html.EditorFor(m => m.MyDropDown)
足够聪明,可以使用正确的模板作为编辑器,但我不相信Html.EditorFor(model => Model)
足够聪明,可以使用任何给定属性的正确模板在模型上,只有模型本身。 (这可能有很好的理由,而实施它可能是在这种灵活性和可能由这种灵活性引起的一些问题之间的权衡。)
我想目前所需的方法是为MyModel
创建自定义编辑器模板。在该模板的内部,您可以使用Html.EditorFor(m => m.MyDropDown)
,而{{1}}将使用其模板。我只是怀疑嵌套的自定义模板必须是手动的,而不是自动的。