Asp.net mvc 4 如何访问使用Ajax加载的partialview中的数据

Asp.net mvc 4 如何访问使用Ajax加载的partialview中的数据,asp.net-mvc-4,Asp.net Mvc 4,我目前正在构建一个网站,在这个网站上,我必须从一个Ajax.BeginForm更新两个单独的目标。我使用一个额外的容器来容纳两个单独的目标,从而使其工作。例如: 原始形式 @model Mod1 @using (Ajax.BeginForm("LoadData", new AjaxOptions{UpdateTargetID = "Div1"})) { <select id="sel1" name="sel1" onchange="$(this.form).submit">

我目前正在构建一个网站,在这个网站上,我必须从一个Ajax.BeginForm更新两个单独的目标。我使用一个额外的容器来容纳两个单独的目标,从而使其工作。例如:

原始形式

@model Mod1
@using (Ajax.BeginForm("LoadData", new AjaxOptions{UpdateTargetID = "Div1"}))
{
  <select id="sel1" name="sel1" onchange="$(this.form).submit">
    // ...
  </select>
}
@using (Ajax.BeginForm("ProcessData", new AjaxOptions{UpdateTargetID = "Div2"}))
{
  <div id="Div1"></div>
    // ...
  <input type="submit" value="GO!" />
}
局部视图

@model Mod2
<select id="sel2" name="sel2">
  @foreach (var item in Model.SelectItems)
  {
    <option value="@item.Value">@item.Text</option>
  }
</select>

@foreach (var item in Model.CheckBoxItems)
{
  <label>@item.Text<input type="checkbox" id="chk1" name="chk1" value="@item.Value"></label>
}

但是,在提交表单时,我无法检索chk1或sel2的值。在调试模式下检查chk1和sel2,chk1为空,而sel2为0。选择选项中没有此类值。任何人都可以提供一些关于原因的见解,以及我如何着手解决它。提前谢谢。

如果我理解正确,您可以做您想做的事情,在同一表单上有两个提交按钮,每个按钮调用一个单独的操作方法。这样,每个提交按钮都可以访问表单中的所有字段。有关如何做到这一点的详细说明,请参见我的回答:

编辑

作为对注释的响应:action方法LoadData应返回一个包含其他两个控件的局部视图,并在其中包含整个begin表单:

@using (Ajax.BeginForm("LoadData", new AjaxOptions{
                                                UpdateTargetID = "Div1",
                                                InsertionMode = InsertionMode.Replace
                                                  })) 
{
    <select id="sel1" name="sel1" onchange="$(this.form).submit">
    // ...
    </select>
}
<div id="Div1">
</div>
<div id="Div2">
</div>
将其移动到另一个局部视图:

    @using (Ajax.BeginForm("ProcessData", new AjaxOptions{UpdateTargetID = "Div2"}))
    {

        // ...
        <input type="submit" value="GO!" />
    }

不完全是我想要的。我的意图是通过从下拉列表中选择一个值。另一个包含在div中的DropDownList和复选框用值更新。用户随后将选择/检查div中的选项并提交表单。但是,我无法访问这两个字段中提交的值,因为int字段为0,string[]字段为null。提交表单时,我仍然得到复选框的null引用。使用int[]或string[]也不能解决这种情况。。。
@using (Ajax.BeginForm("LoadData", new AjaxOptions{
                                                UpdateTargetID = "Div1",
                                                InsertionMode = InsertionMode.Replace
                                                  })) 
{
    <select id="sel1" name="sel1" onchange="$(this.form).submit">
    // ...
    </select>
}
<div id="Div1">
</div>
<div id="Div2">
</div>
    @using (Ajax.BeginForm("ProcessData", new AjaxOptions{UpdateTargetID = "Div2"}))
    {

        // ...
        <input type="submit" value="GO!" />
    }