0

我有一个看起来有点像这样的模型:

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="MyObject@(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中需要的东西吗?

谢谢

4

1 回答 1

1

jqueryserialize()函数可以作用于任何包含单个表单控件的 jquery 对象。正如您所说,通常$("form").serialize()使用它,但您可以在任何选择中使用它。请参阅序列化参考

例如,如果您要发送的所有输入元素都有某个类,那么您可以执行以下操作:

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

你可以看到它在这个小提琴中工作

您只需要决定一种策略来标记您要发送的那些字段。

希望能帮助到你!

于 2013-05-20T18:21:20.340 回答