asp.net MVC 3 - 表单集合不会从表单 MVC 中提取数据



我有麻烦的formcollection。

我有一些表单在视图中,和两个提交按钮都具有唯一的名称="。在调试中,我在formcollection中获得控制器上的所有数据,除了提交按钮的"名称"…我不知道为什么,因为我在其他形式中使用它,而且效果很好。所以我看了看代码,但我找不到使用formcollection对不工作的形式和工作的形式的任何差异。我尝试重命名按钮,移动它们,添加参考,我认为这可能会有所帮助……什么都没有。在每次提交时跳过我的条件,因为它只给我返回"false"和formcollection,我的"上传"或"保存"按钮在onclick上不包含…

所以我想请你帮忙。你能告诉我哪里可能出错吗?谢谢大家!

这是在控制器:

[HttpPost]
public ActionResult EditUser(EditUserVM model, int id, FormCollection c)
{
    //c["upload"] is everytime set to null, 'cos c does't contain it 
    if (c["upload"] != null)
    {
            //.... some code
            return RedirectToAction("Index", "Home");
    }
    if (ModelState.IsValid)
    {
           //.... next code 
    }
    return View("EditUser", model);
}

This is in View:

    @model PrukazOnline.ViewModels.EditUserVM
@{
    ViewBag.Title = "EditUser";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>
@using (Html.BeginForm("EditUser", "User", null, FormMethod.Post, new { @class = "form-horizontal", id = "formstep", enctype = "multipart/form-data" }))
{
    @*Here is some code - @Html.TextBoxFor(x => x.something) and @Html.ValidationMessageFor(x => x.something) - all of these are in formcollection*@   
    .
    .
    .
    .
    <div>
        <input type="submit" value="Nahrát" class="upl" name="upload" id="upload" />
    </div>
    <div class="submit_buttons">
            <input type="submit" name="save" id="save" value="Uložit" />
    </div>
}

Issue在一个表单中有多个提交输入。在FormCollection中只有点击按钮。
我假设你尝试根据点击按钮来改变表单处理,在这种情况下,最好为每个按钮使用不同的操作,像这样:

视图:

<div>
    <input type="submit" value="Nahrát" class="upl" name="upload" id="upload" />
</div>
<div class="submit_buttons">
        <input type="submit" name="save" id="save" value="Uložit" />
</div>

控制器:

[HttpParamAction]
[HttpPost]
public ActionResult Upload(EditUserVM model)
{
    ...
}
[HttpParamAction]
[HttpPost]
public ActionResult Save(EditUserVM model)
{
    ...
}

最新更新