如何将模型值作为javascript函数参数从asp.net mvc Html助手中传递出来,如Html.Radio?

时间:2010-07-20 16:38:45

标签: c# asp.net asp.net-mvc asp.net-mvc-2

好的,非常简单的问题。我想我需要输入一些转义字符,但我不太确定在哪里。

这是我试图调用的javascript函数:

function setData(associateValue, reviewDateValue) {
    var associate = document.getElementById("Associate");
    var reviewDate = document.getElementById("ReviewDate");
    associate.value = associateValue;
    reviewDate.value = reviewDateValue;
}

这是asp .net mvc行,我试图用一个调用上面函数的click事件创建一个单选按钮,并将模型中的数据作为javascript参数值传递。

<%= Html.RadioButton("Selected", item.Selected, new { onClick="setData('<%=item.Associate%>','<%=item.ReviewDate%>' )"  } )%>

以上引发了一堆编译问题而无法正常工作。如下所示的调用会调用javascript,但不会从模型中获取数据。

<%= Html.RadioButton("Selected", item.Selected, new { onClick="setData('item.Associate','item.ReviewDate' )"  } )%>

<%= Html.RadioButton("Selected", item.Selected, new { onClick="setData('item.Associate','item.ReviewDate' )"  } )%>

思想?

        <% String functionCall = String.Format("setData('{0}','{1}')", Html.Encode(item.Associate), Html.Encode(item.ReviewDate )) ;  %>
        <%= Html.RadioButton("Selected", item.Selected, new { onClick=functionCall  } )%>                

2 个答案:

答案 0 :(得分:10)

您需要正确构建代表onclick事件处理程序的字符串:

onClick = String.Format("setData('{0}', '{1}')", item.Association, item.ReviewData)

答案 1 :(得分:1)

应该是这样的:

<%: Html.RadioButton("Selected", item.Selected, new { onClick="setData('" + Html.Encode(item.Associate) + "','" + Html.Encode(item.ReviewDate) + "' )"  } )%>

如果它是MVC2,你应该更喜欢使用:而不是=来确保它是HTML编码的。