Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用作javascript字符串的Razor声明性帮助程序_Javascript_Jquery_Asp.net Mvc 3_Razor - Fatal编程技术网

用作javascript字符串的Razor声明性帮助程序

用作javascript字符串的Razor声明性帮助程序,javascript,jquery,asp.net-mvc-3,razor,Javascript,Jquery,Asp.net Mvc 3,Razor,假设我有一个助手,例如: @helper AddErrorSpan(string error) { <span class="error">@error</span> } 这将失败并导致javascript语法错误,因为助手在末尾返回换行符。这会导致尾随的”)被推到下一行,导致语法错误。我能做些什么来轻松解决这个问题吗?目前最简单的解决方案是使助手像这样 @helper AddErrorSpan(string error) {<span class="er

假设我有一个助手,例如:

@helper AddErrorSpan(string error)
{
    <span class="error">@error</span>
}
这将失败并导致javascript语法错误,因为助手在末尾返回换行符。这会导致尾随的
”)被推到下一行,导致语法错误。我能做些什么来轻松解决这个问题吗?目前最简单的解决方案是使助手像这样

@helper AddErrorSpan(string error)
{<span class="error">@error</span>}
@helper AddErrorSpan(字符串错误)
{@error}

由于在结束
}
之前没有中断,因此不会从帮助程序返回新行,也不会出现javascript语法错误。这有点烦人,看起来很难看。在我的javascript方法中调用帮助程序时,有没有办法防止帮助程序返回换行符?

您需要在调用帮助程序时通过调用对字符串进行javascript编码

这将以
\r\n
的形式跳出换行符,而HTML解析器又将无害地吞并换行符

$('#ErrorDiv').append('@HttpUtility.JavaScriptStringEncode(AddErrorSpan("Year field is required.").ToString())');
您还可以使用:

或者声明一个帮助程序,使其更简洁:

@helper JsEncode(string value) {
    @(HttpUtility.JavaScriptStringEncode(value))
}

详细:(。为什么它必须如此详细。@Raynos:如果您愿意,您可以创建一个名较短的助手来调用此方法。
@Ajax.JavaScriptStringEncode(value)
@helper JsEncode(string value) {
    @(HttpUtility.JavaScriptStringEncode(value))
}