Razor- 为 radioButtonFor 赋予“属性”

Posted

技术标签:

【中文标题】Razor- 为 radioButtonFor 赋予“属性”【英文标题】:Razor- Giving an 'attribute' to a radioButtonFor 【发布时间】:2020-11-11 07:34:00 【问题描述】:

我有这样定义的单选按钮

 @foreach (var actionType in partActionTypes)
 
    <td>
         @html.RadioButtonFor(x => x.Parts[i].SelectedActionType, actionType, new  name = "partRadio" )
    </td>
 

我尝试将“名称”设置为“partRadio”,(我尝试做 @nameName,但两个选项都不起作用。

在我的 JQuery 代码中,我在单击复选框后克隆了一行, 该代码看起来像这样

 $(document).ready(function () 
            $('.tr_clone input.part-class').change(function () 

                let Id = $(this).attr('id');
                let partId = $(this).attr('data-partId');

                if ($(Id).is(":checked")) 
                    // remove cloned row

                    $("#AllTxt").hide();
                    $("#editQty").show();
                
                else 
                    var $tr = $(this).closest('.tr_clone');
                    var $clone = $tr.clone();
                    $clone.find('td');
                    $tr.after($clone);
                    $($clone).find(".part-class").hide();
                    $clone.find('input[type="radio"]').attr("name", function (el)  return el.name + 'clone' );
                    $("#AllTxt").show();
                    $("#editQty").hide();               
                

            );
        );

它应该只是将 'clone' 附加到 'partRadio' 但 HTML 将名称呈现为 'name = undefinedclone`

这是为什么?

【问题讨论】:

【参考方案1】:

问题是因为attr()处理函数的第一个参数是元素的索引,而不是元素本身的引用。

要解决此问题,您需要使用提供给函数的 second 参数正确接受元素,该参数是 name 属性的当前值:

$clone.find('input[type="radio"]').attr("name", function (i, n)  
   return n + 'clone' 
);

请注意,这可以使用箭头函数缩短:

$clone.find('input[type="radio"]').attr("name", (i, n) => n + 'clone');

【讨论】:

以上是关于Razor- 为 radioButtonFor 赋予“属性”的主要内容,如果未能解决你的问题,请参考以下文章

MVC 4 Razor 中的多个单选按钮组

使用 RadioButtonFor 编码一组单选按钮的正确方法

MVC3中使用RadioButtonFor()

Html.RadioButtonFor 单选按钮不在 Safari 或 Chrome 中呈现

如何将枚举传递给 Html.RadioButtonFor 以获取 MVC 2 RC 2、C# 中的单选按钮列表

工作总结 @Html 辅助方法 为 生成的 标签设置元素属性 htmlAttributes 一个对象,其中包含要为该元素设置的 HTML 特性。