C# 复杂类型的隐藏

C# 复杂类型的隐藏,c#,asp.net-mvc,razor,html-helper,C#,Asp.net Mvc,Razor,Html Helper,在我们的应用程序中,我们有一个CatalogValue的概念,它具有ID和DisplayText等属性 我们有一个TypeConverter,允许modelbinder将ID转换为CatalogValue的一个实例,到目前为止一切正常 但是,当我们呈现一个HiddenFor而不是EditorFor时,它就不再工作了,因为隐藏输入字段的值是My.Namespace.SomeCatalogValueType而不是目录值的ID。这听起来很合乎逻辑,因为MVC不知道它应该使用ID 那么,如何告诉ASP.

在我们的应用程序中,我们有一个
CatalogValue
的概念,它具有
ID
DisplayText
等属性

我们有一个
TypeConverter
,允许modelbinder将ID转换为
CatalogValue
的一个实例,到目前为止一切正常

但是,当我们呈现一个
HiddenFor
而不是
EditorFor
时,它就不再工作了,因为隐藏输入字段的
值是
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
是类型为
BrennstoffArt目录值
的属性