2011-08-16 52 views
2

我有我想一些動態JavaScript(具體onchange事件)分配給Html.TextBoxFor:防止編碼經由htmlAttributes分配給Html.TextBoxFor的onchange事件

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

然而,當我檢查生成的HTML,周圍傳遞到JavaScript函數值引號進行編碼,這是一個問題:

onchange="submitAnswer("3")" 

我已經嘗試了一些東西,比如將串入一個IHtmlString,然後使用在作業中的IHtmlString,但r結果總是一樣的。

有沒有辦法阻止MVC編碼分配給@onchange的值?

謝謝!

+0

您是否嘗試過使它成爲一個MvcHtmlString ?例如:onchange = MvcHtmlString.Create(「\」3 \「」)' – Tejs

+0

對不起,Tejs,相同的結果(引號仍然被編碼)。 – jasongullickson

回答

4

或者,你應該改變你連接到該事件的方式:

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

然後在JavaScript中,附加到事件:

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

我會試試這個,謝謝! – jasongullickson

+0

這個工程,雖然我仍然想知道如何(如果?)有一種方法來阻止Razor從編碼的一切(我相信它會再次來:) – jasongullickson

+0

https://stackoverflow.com/questions/ 22507671 /自舉日期選擇器,轉換日期事件犯規,火上時,手動編輯最新 –

-1

嘗試使用單引號,不需要轉義字符。

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

是的,我給了這個鏡頭,結果是相似的(但是對於單引號字符有不同的編碼)。 – jasongullickson