我有一个接受Customer模型的强类型视图,此客户模型是一个LINQ2SQL部分类,它有一个名为Journeys的属性,它返回与此Customer关联的所有Journeys。
我想知道是否可以从Javascript中作为JSON对象访问Customer.Journeys属性。
这可能吗?如果是这样,我将如何访问它?我是否最好创建一个FormViewModel并将Customer详细信息和Journey详细信息存储为JSON对象,并使用以下内容将其传递给javascript函数:
<% MyJavascriptFunction(Model.JSONJourneys) %>
或者我应该更改Journeys分部类并添加.ToJson()属性?还是完全不同的东西?
感谢。
答案 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))似乎做了 特技。