【发布时间】:2018-07-05 22:44:06
【问题描述】:
我有一个带有以下网址的表单: CreateEntity?officeCodeId=5
当我发送表单进行验证时,如果验证失败,它只返回 CreateEntity url。没有 officeCodeId=5。
如果用户在 URL 或 F5 上单击输入 - 我的站点失败 - 它需要缺少 officecodeId 参数。我可以将它保存到会话或其他存储中。但我想把它放在 URL 里
我的看法:
[HttpGet]
public virtual ActionResult CreateEntity(int? officeCodeId)
{
var model = new CreateViewModel();
FillViewModel(model, officeCodeId);
return View("Create", model);
}
[HttpPost]
protected virtual ActionResult CreateEntity(TEditViewModel model)
{
if (ModelState.IsValid)
{
//Do some model stuff if
}
return View("Create", model);
}
编辑。 我的观点:
using (Html.BeginForm("CreateEntity", "Employee", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.HiddenFor(x => x.OfficeCodeId)
<div>
@Html.LabelFor(model => model.FirstName, CommonRes.FirstNameCol)
@Html.TextBoxFor(model => model.FirstName, Model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</div>
<div>
@Html.LabelFor(model => model.LastName, CommonRes.LastNameCol)
@Html.TextBoxFor(model => model.LastName, Model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
</div>
<div> <div class="input-file-area"></div>
<input id="Agreements" type="file" name="Agreements"/>
</div>
}
编辑 2。 添加:
@using (Html.BeginForm("CreateEntity", "Employee", FormMethod.Post, new { officeCodeId = Model.OfficeCodeId, enctype = "multipart/form-data" }))
没有帮助。 它产生以下形式:
<form action="/PhoneEmployee/CreateEntity" enctype="multipart/form-data" method="post" officecodeid="5">
解决方案是
<form action="@Url.Action("CreateEntity", "Employee")?officecodeid=@Model.OfficeCodeId" enctype="multipart/form-data" method="post">
【问题讨论】:
-
问题是什么?
-
如果验证失败,如何恢复查询字符串值?officeCodeId=5。
-
优秀的解决方案!
标签: c# asp.net-mvc asp.net-mvc-4