2013-05-20 22 views
0

我有一個模型,看起來有點像這樣:MVC AJAX後一個元件與型號

Public Class MyModel 

Public Property ID As Integer 
Public Property Name As String 
Public Property TypeID As Integer 
Public Property Description As String 
Public Property MyObjectList As List(Of MyObject) 
Public Property MyObjectList2 As List(Of MyObject) 

我查看這有點像(簡體/編輯爲了方便):

@Using Html.BeginForm() 

@Html.HiddenFor(Function(Model) Model.ID) 
@Html.EditorFor(Function(Model) Model.Name) 
@Html.HiddenFor(Function(Model) Model.TypeID) 
@Html.EditorFor(Function(Model) Model.Description) 

@Html.EditorFor(Function(Model) Model.MyObjectList) 
@Html.EditorFor(Function(Model) Model.MyObjectList2) 

爲MyObject的一個編輯器模板(再次大量編輯):

<div class="myClass" id="[email protected](Model.ID)"> 
     @Html.HiddenFor(Function(modelItem) Model.ID) 
     @Html.TextBoxFor(Function(modelItem) Model.Name) 
     @Html.TextBoxFor(Function(modelItem) Model.Description) 

通過一些JavaScript,用戶可以同時填補我添加更多的MyObject項表格。

在我看來,一個保存功能的職位通過AJAX回填好的表格,看起來有點像這樣:

$('#Save').click(function() {   
    $.post("/MyModel/Save", $('form').serialize(), function (data) { 
     if (data.Success) { 
     } 
     else { 
     } 
    }); 
}); 

這一切工作正常。

現在我想,這將只是後回到MyObjectLists只是一個領域的所有信息的另一種方法。是否有任何與我在表單上使用的.serialize()方法類似的東西,我可以限制在表單的某個部分中的所有表單字段?還是我需要用所有數據構建一個單獨的JSON對象並將其傳回?或者我應該把整個事情都回傳給我,並在vb中過濾掉我需要的東西?

由於

回答

1

jQuery的serialize()功能可以在包含個別表單控件任何jquery對象上採取行動。正如你所說,通常它使用像$("form").serialize(),但你可以在任何選擇上使用它。見serialize reference

例如,如果你想發送的所有輸入元素具有一定的階級,那麼你可以這樣做:

$("form .elementToSend").serialize(); 

你可以看到它在this fiddle

你工作只需要確定一個標記要發送的字段的策略即可。

希望它有幫助!

+0

天才!當然!多麼明顯! – Valuk