我有一个带有以下 url 的表单: 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">