【问题标题】:Prevent encoding of javascript assigned to onchange event of Html.TextBoxFor via htmlAttributes防止通过 htmlAttributes 分配给 Html.TextBoxFor 的 onchange 事件的 javascript 编码
【发布时间】:2011-10-28 09:50:50
【问题描述】:

我有一个 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 的值进行编码?

谢谢!

【问题讨论】:

  • 你试过把它变成一个 MvcHtmlString 吗?例如:onchange = MvcHtmlString.Create("\"3\"")
  • 抱歉 Tejs,结果相同(引号仍然被编码)。

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


【解决方案1】:

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

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

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

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

【讨论】:

【解决方案2】:

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

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

【讨论】:

  • 是的,我试了一下,结果相似(但单引号字符的编码不同)。
猜你喜欢
  • 1970-01-01
  • 2011-03-29
  • 2021-11-24
  • 2019-09-03
  • 1970-01-01
  • 2013-07-22
  • 2023-02-07
  • 1970-01-01
  • 2021-02-14
相关资源
最近更新 更多