我可以获取html.HiddenFor / Html.Hidden创建一个id还是我应该手动创建它?

时间:2011-01-05 12:32:39

标签: asp.net-mvc

我这样做:

<%=Html.HiddenFor(o => o[i].HobbyId) %>

它创建了一个隐藏的输入,但没有id(仅name,我需要id)。

我可以创建一个id吗?

atm我是这样做的:

<%=Html.HiddenFor(o => o[i].HobbyId, new Dictionary<string, object>{{"id", " _ "+i+"__HobbyId"}}) %>

2 个答案:

答案 0 :(得分:13)

更清洁的方法是

<%=Html.HiddenFor(o => o[i].HobbyId, new {id = " _ "+i+"__HobbyId"}) %>

但除此之外你现有的方法还可以。如果你真的想要一个简单的语法,你可以创建一个调用HiddenFor的扩展方法,但这似乎不值得。

答案 1 :(得分:1)

我倾向于做以下事情:

@Html.Hidden(
    string.Format("{0}ObjectId", Model.BindingPrefix), 
    Model.ObjectId
)

产生这个:

<input id="customerModel_ObjectId" name="customerModel.ObjectId" type="hidden" value="3a44d3eb-58ec-4229-9fe0-e420d9855bb7">

id和name约定是一致的,并产生不会改变的稳定id和name值。这对我很有用。

所以要将您的示例转换为我的格式:

@Html.Hidden(
    string.Format(" _ {0}__{1}", i, HobbyId), 
    HobbyId,
)

......那应该能得到你想要的东西。希望在输入时我没有注入任何语法错误。 :)