假设我有一个帮助者,例如:

@helper AddErrorSpan(string error)
{
    <span class="error">@error</span>
}

我遇到了尝试在javascript中调用帮助程序的问题。例如:
if ($('#YearTextBox').val() == "")
{
        $('#ErrorDiv').append('@AddErrorSpan("Year field is required.")');
}

这将失败并导致javascript语法错误,因为帮助程序最后会返回换行符。这导致结尾的');被推到下一行,从而导致语法错误。我可以采取什么措施来轻松地解决此问题?当前,简单的解决方案是使助手成为这样。
@helper AddErrorSpan(string error)
{<span class="error">@error</span>}

由于结束}之前没有中断,因此不会从帮助程序返回新行,并且没有javascript语法错误。这有点烦人,而且很难看。有没有一种方法可以防止在我的javascript方法中调用助手时返回换行符?

最佳答案

调用帮助程序时,需要通过调用 HttpUtility.JavaScriptStringEncode 对字符串进行Javascript编码。

这将以\r\n换行,而HTML解析器将无害地吞下该换行。

$('#ErrorDiv').append('@HttpUtility.JavaScriptStringEncode(AddErrorSpan("Year field is required.").ToString())');

10-04 15:45