我在使用formcollection时遇到了麻烦。
我在视图中有一些表单,两个提交按钮都有唯一的名称=“”。在调试中,我在formcollection上的控制器上除了提交按钮的“名称”之外的所有数据...我不知道为什么,'我用其他形式的这个并且它运行良好。所以我看一下代码,但是我找不到使用formcollection在不工作的formcol和工作formcol上的任何差异。我尝试重命名按钮,移动它们,添加我认为可以帮助的参考...没什么。在每次提交时跳过我的条件,因为它只返回“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);
}
这是在视图中:
@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>
}
答案 0 :(得分:0)
问题在于单一形式的多个提交输入。只会点击FormCollection
中的按钮
我想你尝试根据点击的按钮改变表单处理,在这种情况下,最好对每个按钮使用不同的Actions,如下所示:
查看:
<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)
{
...
}