Я начал изучать MVC и вместе хочу использовать KnockOut.js
У меня проблемы с пониманием того, почему новый тег @ include кодирует все в HTML (edit: хорошо, теперь я знаю, чтобы предотвратить XSS)... но еще хуже, как остановить это от этого ..
У меня есть этот код.
@{
ViewBag.Title = "Home Page";
var myData = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model);
}
<script type="text/javascript">
var initialData = @myData ;
Который производит этот источник
<script type="text/javascript">
var initialData = [{"Title":"Tall Hat","Price":49.95},{"Title":"Long Cloak","Price":78.25}] ;
Хорошо.поэтому попытался использовать HttpUtility.HtmlDecode
.. и ничего не происходит с включенным битом в javascript, потому что бритвенный механизм перекодирует его?но если он использует кодирование, то повторно кодирует кодирует html .. briallinat.
Я не могу понять, как остановить кодировку.
MSDN говорит, что использовать @:
, но это не работает вблок javascript, я даже пытался @{ @:new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model);}
Это просто что-то странное и вызывает другие ошибки.
Как это должно быть сделано в модели MVC?
В aspx используя
var initialData = <%= new JavaScriptSerializer().Serialize(Model) %>;
отлично работает ..