我将 ASP.NET MVC 4 用于内部 Web 应用程序,并且我希望将 HTML 输入字段绑定到自定义对象而不是字符串。
在 HTML 中,我的输入字段如下所示:
<input type="hidden" name="First" value="1;Simple" />
<input type="hidden" name="First" value="2;Sample" />
<input type="hidden" name="Second" value="1;Over" />
<input type="hidden" name="Third" value="22;Complex" />
<input type="hidden" name="Third" value="17;Whosit" />
这将愉快地绑定到 ViewModel 属性,例如:
public string[] First { get; set; }
public string[] Second { get; set; }
public string[] Third { get; set; }
每个字符串都是一个分隔的键+值字符串,我希望它自动解析为一个具体的对象(我已经定义了一个。)理想情况下,我希望它完全按照上面的方式绑定,但使用我的对象知道如何将分隔字符串拆分为适当的属性。
我不知道如何让 MVC 绑定到自定义对象。我使用了构造函数和隐式运算符定义,但除了字符串数据类型外,我无法让它与任何东西一起使用。
我知道如果我在 HTML 中将值预先拆分成对,我可以让它工作,但我使用的 JavaScript 库不具备这种能力。例如,我知道重复 {name}.Label 和 {name}.Value 可以绑定到我的复杂对象上的字符串属性,但这是禁止的并且不是入门的。
我已经让它与一个自定义对象一起处理文件上传,但我怀疑这只是因为它继承自同一个基础对象。我不能在这里执行此操作,因为string
它是密封类型且无法扩展。
我最后的手段是找到默认的模型绑定代码并反映它以弄清楚它是如何分配值的,看看它是否教会了我可以覆盖的任何东西。我不想走我必须自己写的自定义活页夹的路线,如果归根结底,我只会有重复的 ViewModel 字段并自己转换它们,但如果有的话,我真的很想避免这种情况模型绑定器已经具备为我执行此操作的能力。