2011-07-29 36 views
5

假設我有一個助手,如剃刀聲明幫手。例如:使用JavaScript字符串

if ($('#YearTextBox').val() == "") 
{ 
     $('#ErrorDiv').append('@AddErrorSpan("Year field is required.")'); 
} 

這會失敗並且會導致javascript語法錯誤,因爲助手會在最後返回換行符。這導致尾隨');被推送到下一行導致語法錯誤。我能做些什麼來輕鬆解決這個問題嗎?目前,簡單的解決方案就是像這樣做助手。

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

既然沒有閉合}之前沒有從助手返回新斷線之後,沒有JavaScript語法錯誤。這是一種討厭,只是看起來醜陋。有沒有辦法讓我的JavaScript方法中調用幫助器不會返回換行符?

回答

4

您需要在調用助手時調用HttpUtility.JavaScriptStringEncode來對字符串進行Javascript編碼。

這會將換行符轉義爲\r\n,反過來HTML轉換器將無害地吞噬該換行符。

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

放牧:(爲什麼一定要這麼詳細 – Raynos

+1

。 @Raynos:如果你願意,你可以用一個名字較短的助手來調用這個方法。 – SLaks

1

您還可以使用AjaxHelper.JavaScriptStringEncode

@Ajax.JavaScriptStringEncode(value) 

或聲明的輔助,使其更簡潔:

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