Razor syntax error serializing ASP.NET Model to JSON with Html.Raw

后端 未结 5 440
臣服心动
臣服心动 2020-12-09 03:09

This line is giving me a syntax error in Visual Studio 2012 (literally just \'Syntax Error\'):

var data = @Html.Raw(new System.Web.Script.Serialization.JavaS         


        
相关标签:
5条回答
  • 2020-12-09 03:43

    You don't need to write any new javascript functions, just wrap the code into brackets

    var data = (@Html.Raw(Json.Encode(Model)));
    

    works for me in Visual Studio 2015, not sure about VS2012

    0 讨论(0)
  • 2020-12-09 03:49

    Using function

    Implement a simple JavaScript set function that returns input argument:

    function set(value){
        return value;
    }
    

    Use this function to assign Razor model value to a JavaScript variable:

    var data = set(@Json.Encode(Model));
    

    As an option you can use self-calling function:

    var data = function() { return set(@Json.Encode(Model)); }();
    
    0 讨论(0)
  • 2020-12-09 03:54

    Use JSON.Net, instead of either the JavaScriptSerializer or DataContractJsonSerializer, to avoid the nightmare that is JSON Dates:

    var data = function () { 
        return @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model)); }();
    
    0 讨论(0)
  • 2020-12-09 04:04

    Try to wrap it within a function as follows:

    var data = function() { return @Html.Raw(Json.Encode(Model)); }();
    
    0 讨论(0)
  • 2020-12-09 04:05

    Even easier!! This will fix that little annoyance:

    var model = [@Html.Raw(Json.Encode(Model))][0];
    

    Basically intellisense wants something around @Html.Raw. There is actually nothing wrong but we have to handle the intellisense shortcoming. Here we declare the result as the first index of a new array, then return the first index.

    FYI: If you want your model to reflect changes to the DOM then try the JSModel class.

    0 讨论(0)
提交回复
热议问题