ASP.NET MVC如何使用Html.BeginForm的两个Actionresults?

时间:2013-03-01 10:41:48

标签: asp.net-mvc-4

我正在尝试像ASP.NET MVC Using two inputs with Html.BeginForm这个问题所描述的那样做,但有足够的不同,我真的不知道hwo将它应用到我的项目中:

我有一个包含3个下拉列表的视图(配置文件列表,连接的salarylist和未连接的salarylist)

看起来像这样:

  <div class="row bgwhite">
           @using (Html.BeginForm("GetConnectedSalaries", "KumaAdmin", FormMethod.Get, new { Id = "ProfileListForm" }))
            {
              <div class="four columns list list1">
                  @Html.DropDownList("Profiles", (SelectList) ViewBag.Profiles, "--Välj profilgrupp--",
                  new 
                  {
                    //onchange = "$('#ProfileListForm')[0].submit();"
                    // Submits everytime a new element in the list is chosen
                    onchange = "document.getElementById('ProfileListForm').submit();"
                  })
              </div>
            }
            @using (Html.BeginForm("Index", "KumaAdmin", FormMethod.Get, new { Id = "SalaryListForm" }))
            {
                <div class="four columns list list2" style="margin-top:-19px;">
                    @Html.DropDownList("Salaries", (SelectList) ViewBag.Salaries, "--Kopplade LöneGrupper--") 
                </div>
            }

            @using (Html.BeginForm("GetNOTConnectedSalaries", "KumaAdmin", FormMethod.Get, new { Id = "NotConSalaryListForm" }))
            {
                <div class="four columns list list2" style="margin-top:-19px;">
                    @Html.DropDownList("Salaries", (SelectList)ViewBag.NotConSalaries, "--Ej Kopplade LöneGrupper--") 
                    <input style="float: left;" type="submit" value="Knyt" />
                </div>
            }
         </div>

正如您在上面看到的那样,当我更改元素时,我会在配置文件列表中找到提交表单的脚本代码,并调用以下的actionresult来填充我的“连接的salarylist”。

  [HttpGet]
    public ActionResult GetConnectedSalaries(int Profiles = -1)
    {
        Model.SalaryGroups = AdminManager.GetConnectedSalaries(Profiles);
        ViewBag.Salaries = new SelectList(Model.SalaryGroups, "Id", "SalaryName", "Description");

        return (Index());
    } 

我不想做的事情:

当我在个人资料列表中选择一个元素时,我想调用2个动作结果,我上面显示的那个,第二个将推广我的第三个列表,其中包含“未连接的工资”。 第二个Actionresult:

 public ActionResult GetNOTConnectedSalaries(int Profiles = -1)
    {
        Model.SalaryGroups = AdminManager.GetNOTConnectedSalaries(Profiles);
        ViewBag.NotConSalaries = new SelectList(Model.NotConSalaryGroups, "Id", "SalaryName", "Description");

        return (Index());
    }

我不想用AJAX / JSON,严格意义上的MVC来做这件事。 我阅读了上面链接的问题,但不知道如何将其应用到我的项目中,或者甚至可以做同样的事情。

如果需要更多信息,我会尽力提供。

谢谢!

1 个答案:

答案 0 :(得分:0)

我非常确定这样做的最好方法是有两个动作结果,我完全不知道我可以从同一个actionresult调用我的db方法并填充两个列表。

简单的解决方案:

  [HttpGet]
    public ActionResult GetSalaries(int Profiles = -1)
    {
        Model.SalaryGroups = AdminManager.GetConnectedSalaries(Profiles);
        ViewBag.Salaries = new SelectList(Model.SalaryGroups, "Id", "SalaryName", "Description");
        Model.NotConSalaryGroups = AdminManager.GetNOTConnectedSalaries(Profiles);
        ViewBag.NotConSalaries = new SelectList(Model.NotConSalaryGroups, "Id", "SalaryName", "Description");

        return (Index());
    }

对不起,如果我浪费你的时间:(但希望这会帮助其他尝试相同的人。

然而,如果有两种方法可以在两个动作结果中执行此操作,那么我将把问题保持为开放状态,看看它是如何完成的将会很有趣。