通过htmlAttributes防止分配给Html.TextBoxFor的onchange事件的javascript编码

时间:2011-08-16 20:24:11

标签: c# javascript asp.net-mvc-3

我有一个Html.TextBoxFor,我想将一些动态javascript分配给(特别是onchange事件):

@Html.TextBoxFor(model => answer.Value, new { @class = "answerinput", @onchange = "submitAnswer(\"" + Model.QuestionID.ToString() + "\")" });

但是,当我检查生成的HTML时,传递给javascript函数的值的引号会被编码,这是一个问题:

onchange="submitAnswer("3")"

我尝试了一些方法,比如将字符串放入IHtmlString,然后在赋值中使用IHtmlString但结果始终相同。

有没有办法阻止MVC编码分配给@onchange的值?

谢谢!

2 个答案:

答案 0 :(得分:4)

或者,您应该更改附加到事件的方式:

Html.TextBoxFor(x => x.SomeProperty, new { rel = Model.QuestionID, @class = "SomeClass" });

然后在javascript中,附加到事件:

$('.SomeClass').each(function()
{
     $(this).change(function()
     {
          var questionId = $(this).attr('rel');
     });
});

答案 1 :(得分:-1)

尝试使用单引号,不需要转义字符。

@Html.TextBoxFor(model => answer.Value, new { @class = "answerinput", @onchange = "submitAnswer('" + Model.QuestionID.ToString() + "')" });