2011-12-18 48 views

回答

2

假设你有一个模型,一个强类型的视图中,您可以使用$就法在整个模型发送到使用JSON AJAX请求的服务器:

@model MyViewModel 

<script type="text/javascript"> 
    var model = @Html.Raw(Json.Encode(Model)); 
    $.ajax({ 
     url: '@Url.Action("Foo")', 
     type: 'POST', 
     contentType: 'application/json; charset=utf-8', 
     data: JSON.stringify({ model: model }), 
     success: function(result) { 
      // TODO: process the result from the server 
     } 
    }); 
</script> 

和相应的控制器动作,这是我们发送POST请求:

[HttpPost] 
public ActionResult Foo(MyViewModel model) 
{ 
    // TODO: do something with the request and return a result 
} 
+0

我在Json.Encode(Model)中获得循环引用。 MyViewModel具有模型的属性。 Model类是通过Linq to Sql生成的。这是因为参考表? – jmogera 2011-12-20 13:18:01

+1

@jmogera,你不应该将域模型(例如Linq-To-SQL类)传递给你的视图。您应该只使用视图模型,这些模型是您为每个视图专门定义的类,以便满足其要求。 – 2011-12-20 15:42:29

+0

谢谢。我对此很陌生,但是我创建了仅适用于视图的属性,并且没有将模型属性传递给视图。上面列出的事件确实被调用,但“MyViewModel”具有空引用。我设置了@ Html.TextBorFor(x => x.Property1)。当我在字段中输入txt并按下按钮时,Property1不会更新。任何想法为什么参数中的整个对象都是空的? – jmogera 2011-12-20 21:17:25

相关问题