Ric*_*ick 5 javascript jquery razor asp.net-mvc-3
假设我有一个帮手,如:
@helper AddErrorSpan(string error)
{
<span class="error">@error</span>
}
Run Code Online (Sandbox Code Playgroud)
我遇到试图在javascript中调用帮助程序的问题.例如:
if ($('#YearTextBox').val() == "")
{
$('#ErrorDiv').append('@AddErrorSpan("Year field is required.")');
}
Run Code Online (Sandbox Code Playgroud)
这会失败并导致javascript语法错误,因为帮助程序在结尾处返回换行符.这会导致尾部');被推送到下一行,从而导致语法错误.我能做些什么来轻松解决这个问题吗?目前,简单的解决方案是制作这样的帮手.
@helper AddErrorSpan(string error)
{<span class="error">@error</span>}
Run Code Online (Sandbox Code Playgroud)
由于在关闭之前没有中断,因此}不会从帮助程序返回新行,并且没有javascript语法错误.这有点烦人,看起来很难看.在我的javascript方法中调用时,是否有办法让助手不返回换行符?
您需要HttpUtility.JavaScriptStringEncode在调用帮助程序时通过调用对字符串进行 Javascript 编码。
这会转义换行符 as \r\n,而换行符又会被 HTML 解析器无害地吞掉。
$('#ErrorDiv').append('@HttpUtility.JavaScriptStringEncode(AddErrorSpan("Year field is required.").ToString())');
Run Code Online (Sandbox Code Playgroud)