看到它
@Html.DropDownListFor(x => x.Field, ModelClass.MakeSelectListUtenti(Model.Destinations), new { id="Destinations"})
这里我们将控件ID名称指定为“Destination”但是如何指定名称“UniqueID_”+“Destination”?
有人告诉我一种方法,如下所示
@Html.DropDownListFor(x => x.Field, ModelClass.MakeSelectListUtenti(Model.Destinations), new { id= @guid.NewGuid().ToString() + "Destinations"})
我想知道还有其他办法吗?我听说mvc4引入了一些新技术。这是真的......那是什么?
如果可能的话,还会向我展示在 mvc 3/4 中生成唯一客户端ID的各种方法。 感谢
答案 0 :(得分:0)
我无法让VS给你一个代码示例,但是我会做类似于你所展示的东西,但是使用整数。
我假设ID是一个问题,因为您正在创建下拉列表。否则你显然只会改变文字。
如果您从列表中动态创建下拉列表,则可以将其置于for循环中,并使用当前数字作为您的ID的预先挂起。这会产生像id = @myInt +“_Destinations” - >的结果。 '0_Destinations','1_Destinations'等我多次使用过这种模式。它使jQuery选择变得简单,并且比Guid ID更加整洁。
如果您没有遍历列表,可以创建一个方法,为您提供一个数字,然后在Id中预先挂起。
答案 1 :(得分:0)
据我所知,现在可以通过官方方式进行,所以我建议采用jQuery方式:
首先设置自定义属性,而不是下拉列表的ID,如下所示:
@Html.DropDownListFor(x => x.Field, ModelClass.MakeSelectListUtenti(Model.Destinations), new { originalid="Destinations"})
这可以放多次,然后在你的页面上写一个脚本:
$(document).ready(function () {
$("[originalid]").each(function () {
var originalid = $(this).attr("originalid");
$(this).attr("id", $("[originalid='" + originalid + "']").index($(this)) + "_" + originalid);
});
})
同样的id将初始化为“0_Destinations”“1_Destinations”等。