【问题标题】:Adding control id dynaically动态添加控件ID
【发布时间】:2025-12-16 13:15:02
【问题描述】:

我将 MVC3 与 Razor 一起使用。

我想为我的单选按钮动态生成 id。我在循环中调用我的代码,并且应该动态生成 ID/名称。 在我的视图中为我的单选按钮命名......就像下面的代码......

@Html.RadioButtonFor(m => m.ClaimEntity.Claim, "True", Model.m.ClaimEntity.Claim.Equals(true) ? new { name = "Claim_" + ViewData["count"].ToString(), id = "Claim", title = "Claim_" + ViewData["count"].ToString() } : null)
                @Html.Label("Yes")
                @Html.RadioButtonFor(m => m.ClaimEntity.Claim, "False", Model.m.ClaimEntity.Claim.Equals(false) ? new { name = "Claim_" + ViewData["count"].ToString(), id = "Claim", title = "Claim_" + ViewData["count"].ToString() } : null)
                @Html.Label("No")

问题是,上面的代码 sn-p 没有显示为单选按钮创建的动态 id,而它显示了动态创建的“标题”,所以我需要在类似的行中为“id”和“name”的“title”属性。

请建议我怎样才能让它工作。 问候,

【问题讨论】:

标签: asp.net-mvc-3


【解决方案1】:

看起来您生成的所有单选按钮都具有相同的 ID!这可能会导致您的网页出现意外行为:通常,每个元素都必须有一个 唯一 id。

如果我们也让 id 依赖于 ViewData["count"],我们可以确保它们是唯一的。

@Html.RadioButtonFor(m => m.ClaimEntity.Claim, "True", Model.m.ClaimEntity.Claim.Equals(true) ? new { name = "Claim_" + ViewData["count"].ToString(), id = "Claim_True" + ViewData["count"].ToString(), title = "Claim_" + ViewData["count"].ToString() } : null)
                @Html.Label("Yes")
                @Html.RadioButtonFor(m => m.ClaimEntity.Claim, "False", Model.m.ClaimEntity.Claim.Equals(false) ? new { name = "Claim_" + ViewData["count"].ToString(), id = "Claim_True" + ViewData["count"].ToString(), title = "Claim_" + ViewData["count"].ToString() } : null)
                @Html.Label("No")

【讨论】: