1

在 webform 中,我们永远不必考虑控件 ID 或名称的唯一性。一切网络表单都会自动处理。所以告诉我,当我们为 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 的各种方法。谢谢

4

2 回答 2

0

我无法让 VS 给你一个代码示例,但我会做一些与你所展示的类似的事情,但使用整数。

我假设 ID 是一个问题,因为您正在动态创建下拉列表。否则,您显然只会更改文本。

如果您正在从列表中动态创建下拉列表,则可以将其放在 for 循环中,并将当前数字用作 id 的前置。这会给出类似 id= @myInt + "_Destinations" -> '0_Destinations', '1_Destinations' 等的结果。我已经多次使用这种模式。它使 jQuery 选择变得容易,并且比 Guid id 更整洁。

如果你没有遍历一个列表,你可以创建一个给你一个数字的方法,然后把它预先挂在一个 Id 中。

于 2013-07-30T08:10:24.120 回答
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”等。

于 2013-07-30T08:46:53.880 回答