我有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的编辑器。我可以使用@Html.EditorFor(m => m.MyDropDown)为MyDropDown添加编辑器。
如何在EditorForModel中添加MyDropDown编辑器
发布于 2014-10-13 19:58:30
我之所以将此作为答案,是因为我怀疑这是目前正确的方法,尽管与任何ASP.NET MVC答案一样,它很可能在下一个版本中变得不正确……
正如您可能知道的,Html.EditorForModel()只是一个帮助器,其结果与Html.EditorFor(model => Model)相同。我怀疑,它的当前行为在某种程度上仅限于任何给定模型上的原始类型。当然很方便,但并不像你的模型所需要的那样健壮。
虽然Html.EditorFor(m => m.MyDropDown)足够聪明,可以使用正确的模板作为编辑器,但我不相信Html.EditorFor(model => Model)足够聪明,可以为模型上的任何给定属性使用正确的模板,只有模型本身。(这可能有很好的理由,它的实现可能在这种灵活性和这种灵活性可能产生的一些问题之间进行了权衡。)
我想现在需要的方法是为MyModel创建一个自定义编辑器模板。在模板内部,您可以使用Html.EditorFor(m => m.MyDropDown),它将反过来使用其模板。我只是怀疑嵌套自定义模板必须是手动的,而不是自动的。
https://stackoverflow.com/questions/26338852
复制相似问题