C# 防止通过htmlAttributes对分配给Html.TextBoxFor的onchange事件的javascript进行编码

C# 防止通过htmlAttributes对分配给Html.TextBoxFor的onchange事件的javascript进行编码,c#,javascript,asp.net-mvc-3,C#,Javascript,Asp.net Mvc 3,我有一个Html.textbox,我想为它分配一些动态javascript(特别是onchange事件): 但是,当我检查生成的HTML时,传递到javascript函数的值周围的引号被编码,这是一个问题: onchange="submitAnswer("3")" 我尝试了一些方法,比如将字符串放入IHtmlString,然后在赋值中使用IHtmlString,但结果总是一样的 有没有办法防止MVC对分配给@onchange的值进行编码 谢谢 尝试使用单引号

我有一个Html.textbox,我想为它分配一些动态javascript(特别是onchange事件):

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

onchange="submitAnswer("3")"
我尝试了一些方法,比如将字符串放入IHtmlString,然后在赋值中使用IHtmlString,但结果总是一样的

有没有办法防止MVC对分配给@onchange的值进行编码


谢谢

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

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

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

Html.TextBoxFor(x => x.SomeProperty, new { rel = Model.QuestionID, @class = "SomeClass" });
$('.SomeClass').each(function()
{
     $(this).change(function()
     {
          var questionId = $(this).attr('rel');
     });
});
然后在javascript中,附加到事件:

Html.TextBoxFor(x => x.SomeProperty, new { rel = Model.QuestionID, @class = "SomeClass" });
$('.SomeClass').each(function()
{
     $(this).change(function()
     {
          var questionId = $(this).attr('rel');
     });
});

是的,我试了一下,结果是相似的(但单引号字符的编码不同)。你试过把它变成MvcHtmlString吗?例如:
onchange=MvcHtmlString.Create(“\”3\”)
对不起,Tejs,同样的结果(引号仍然被编码)。这是有效的,尽管我仍然想知道如何(如果?)有一种方法阻止Razor对所有内容进行编码(我确信它会再次出现:)