[英]Razor syntax error serializing ASP.NET Model to JSON with Html.Raw
這行在Visual Studio 2012中給我一個語法錯誤(字面上只是'語法錯誤'):
var data = @Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model));
在這種情況下, Model
是在我的cshtml頂部聲明的@model MyApp.ViewModels.MyViewModel
的實例。
我的模型被正確地序列化到數據var中,並且應用程序正常工作。 在美容方面,將錯誤永久存在於我的錯誤列表中會很煩人。
我應該如何修改該行以使編譯器滿意?
編輯:
根據要求,更多背景。 這是整個$(document).ready()
:
<script type="text/javascript">
$(document).ready(function () {
$('#ReportDate').datepicker();
$('#DispositionDate').datepicker();
var data = @Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model));
var vm = new NonconformingProductViewModel(data);
ko.applyBindingsWithValidation(vm);
// validate on page load so all reqd fields are highlighted.
var valid = ko.validation.group(vm, {deep: true});
valid.showAllMessages(true);
}); // end document.ready
</script>
實現一個返回輸入參數的簡單JavaScript set
函數:
function set(value){
return value;
}
使用此函數將Razor模型值分配給JavaScript變量:
var data = set(@Json.Encode(Model));
作為選項,您可以使用自我調用功能:
var data = function() { return set(@Json.Encode(Model)); }();
嘗試將其包裝在function
,如下所示:
var data = function() { return @Html.Raw(Json.Encode(Model)); }();
更容易!! 這將解決這個小煩惱:
var model = [@Html.Raw(Json.Encode(Model))][0];
基本上intellisense想要@Html.Raw
周圍的東西。 實際上沒有錯,但我們必須處理智能感知的缺點。 這里我們將結果聲明為新數組的第一個索引,然后返回第一個索引。
僅供參考:如果您希望模型反映DOM的更改,請嘗試使用JSModel類。
您不需要編寫任何新的javascript函數,只需將代碼括在括號中即可
var data = (@Html.Raw(Json.Encode(Model)));
在Visual Studio 2015中適合我,不確定VS2012
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.