我们的应用程序中有CatalogValue
的概念,其中包含ID
和DisplayText
(以及其他)属性。
我们有TypeConverter
允许模型绑定器将ID转换为CatalogValue
的实例,到目前为止一切正常。
但是,当我们渲染HiddenFor
而不是EditorFor
时,它不再起作用,因为隐藏输入字段的value
是My.Namespace.SomeCatalogValueType
而不是目录值的ID。这听起来合乎逻辑,因为MVC无法知道它应该使用ID。
那么,如何告诉ASP.NET MVC将ID作为值呈现?我们必须实现一个接口吗?是在呼叫ToString()
吗?
目前我们有这个古怪的解决方法,我们想替换:
@Html.HiddenFor(x => x[i].BrennstoffArt, htmlAttributes: new { Value = @Model[i].BrennstoffArt.Id })
其中BrennstoffArt
是BrennstoffArtCatalogValue
类型的属性。