2009-11-13 68 views
0

我正在使用ASP.NET MVC和Entity Framework。我要將一個複雜的實體傳遞給clent端,讓用戶修改它,並將其發送回控制器。但我不知道該怎麼做,以及客戶端實體是否會因爲與對象上下文分離而失去EF的關係跟蹤。從clent側回發覆雜對象

任何想法?提前致謝!

+0

爲了防止您開始操作Javascript對象並想將它們發送到服務器,有一個簡單的jQuery插件可以實現它(也可以發佈日期等)。所以發送複雜的Javascript對象到控制器動作:http://erraticdev.blogspot.com/2010/12/sending-complex-json-objects-to-aspnet.html – 2011-04-22 07:55:09

回答

2

ASP.NET MVC能夠模型綁定複雜的對象,它很擅長。一個簡單的方法是將您的視圖字段命名爲與您的對象屬性相同。在你的動作方法中,表單發佈給你的只需要複雜的對象作爲參數。例如:

<% using(Html.BeginForm()) { %> 

    <%= Html.TextBox("Property1") %> 
    <%= Html.TextBox("Property2") %> 
    <%= Html.TextBox("Property3") %> 
    <%= Html.TextBox("Property4") %> 
    <%= Html.CheckBox("PropertyBool") %> 
    <%= Html.TextBox("Property5") %> 

<% } %> 

哪個職位,以一個動作方法,像這樣:

public ActionResult Index(ComplexObject complexoObject) 
{ 

} 

這是一個相當簡單的例子,你可以在對應所述對象的特性的視圖具有不同的表單控件。如果您的對象非常複雜,您可以隨時編寫自己的模型綁定器並覆蓋默認的模型綁定器。

+0

是的,的確如此。但是我發佈的是一個包含100多個問題的大問題。它們包含在一個列表中。我怎樣才能發佈回來?謝謝! – Roy 2009-11-13 08:20:02

+2

http://marcomagdy.com/2009/09/03/asp-net-mvc-model-binding-form-inputs-to-action-parameters/ – queen3 2009-11-13 13:20:22

+0

查看queen3的鏈接並查看「Binding to Collections of簡單類型「和」綁定到自定義類型的集合「。如果您相應地命名您的表單元素,您可以接受一個列表作爲參數,並且MVC將自動將該模型綁定到該列表。 – 2009-11-13 13:44:19

-2

你是說你在單個頁面上顯示100個問題的列表?我希望你沒有那樣做。首先,這不是非常用戶友好的。它涉及很多向下滾動,用戶可能會迷路,容易出錯,如果出現問題,他必須重做。

更好的方法是每次只有一個或幾個問題。用Next/Prev按鈕在它們之間移動。

你可以讓自己變得更容易,忘記回發並且採用AJAX的方式 - 向AJAX服務器發出一個JSON服務請求。並且在每個問題之後保存進度,所以如果出現問題,用戶可以從他離開的地方稍後恢復。它將更加可維護,更快和用戶友好。