【问题标题】:Accessing ASP.NET MVC model data from with Javascript使用 Javascript 访问 ASP.NET MVC 模型数据
【发布时间】:2009-10-01 10:29:45
【问题描述】:

我有一个接受客户模型的强类型视图,这个客户模型是一个 LINQ2SQL 部分类,它有一个名为 Journeys 的属性,它返回与这个客户关联的所有旅程。

我想知道是否可以从 Javascript 中将 Customer.Journeys 属性作为 JSON 对象访问。

这可能吗?如果是这样,我将如何访问它?我最好创建一个 FormViewModel 并将客户详细信息和旅程详细信息作为 JSON 对象存储在那里,然后使用以下方式将其传递给 javascript 函数:

<% MyJavascriptFunction(Model.JSONJourneys) %>

或者我应该改变 Journeys 部分类并添加一个 .ToJson() 属性?还是完全不同的东西?

谢谢。

【问题讨论】:

    标签: asp.net-mvc json


    【解决方案1】:

    我会这样做:

    使用NewtonSoft Json Library,您可以在客户端将任何C#模型对象转换为Json

    http://james.newtonking.com/pages/json-net.aspx

    在视图中

    <script>
    
    var jsobject = <%= JsonConvert.SerializeObject(Model.Journeys) %>;
    
    function myfunction (){ 
      //work with object
    
    }
    
    </script>
    

    【讨论】:

      【解决方案2】:

      如何通过 Javascript 视图公开您的 Customer 模型并将其作为常规 javascript 文件加载到您的 HTML 中?

      像这样:

      在您的 HTML 视图中:

      <script type="text/javascript" src="/customers/123/json">
      

      在你的控制器中:

      public ActionResult CustomerJson(int customerId)
      {
         var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
         var customer = Customer.Get(customerId);
         var serializedCustomer = serializer.Serialize(customer);
         return JavaScript(
            "function getCustomer() { return (" + serializedCustomer + "); }");
      }
      

      【讨论】:

        【解决方案3】:

        这个问题早已得到回答(并被接受),但我想传递一个对帮助我的类似问题的回答。他的回答利用了 MVC3/Razor 语法:

        https://stackoverflow.com/a/7486214/249153:

        在带有剃须刀的 mvc3 中 @Html.Raw(Json.Encode(object)) 似乎可以做到 把戏。

        【讨论】:

        • 太棒了!如果没有@Html.Raw,我会收到一个错误,提示“意外令牌&”。在我的情况下,我只做'var model = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model));'。此刻,我不确定是否需要 Encode,或者它是否执行类似 SerializeObject 的操作,但它可以工作。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-17
        • 2012-05-12
        • 2013-06-21
        相关资源
        最近更新 更多