如何在mvc中给出唯一的名称来控制

时间:2013-07-30 07:11:32

标签: asp.net-mvc

在webform中,我们永远不必考虑控件ID或名称的独特性。一切webform自动处理。告诉我,当我们为html控件的ID分配名称时,我该如何提供唯一的名称?请帮我处理小代码片段

看到它

@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的各种方法。 感谢

2 个答案:

答案 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”等。