使用Javascript访问ASP.NET MVC模型数据

时间:2009-10-01 10:29:46

标签: asp.net-mvc json

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

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

这可能吗?如果是这样,我将如何访问它?我是否最好创建一个FormViewModel并将Customer详细信息和Journey详细信息存储为JSON对象,并使用以下内容将其传递给javascript函数:

<% MyJavascriptFunction(Model.JSONJourneys) %>

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

感谢。

3 个答案:

答案 0 :(得分:6)

我会这样做:

使用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>

答案 1 :(得分:2)

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

像这样:

在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 + "); }");
}

答案 2 :(得分:2)

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

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

  

在mvc3中使用razor @ Html.Raw(Json.Encode(object))似乎做了   特技。