在一个视图页面中有多种形式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在一个视图页面中有多种形式相关的知识,希望对你有一定的参考价值。
我正在处理可处理员工资料的应用程序。
我在一个视图页面中有3个表单(都在同一个控制器中),但是它只保存第一个表单。当我保存第二个表格时,它将清除第一个和第三个表格的值。
这是我的代码:
视图/ EMP /索引:
@using (html.BeginForm("Edit", "EMPs", FormMethod.Post, new enctype = "multipart/form-data" ))
<div class="form-group">
<div class="pull-right">
<input type="submit" value="Update" name="personalsubmit" class="btn btn-success" />
</div>
</div>
@ Html.RenderAction("Index", "EMP_REFERENCE", new id = Model.eMP.lineno );
@using (Html.BeginForm("Edit", "EMPs", FormMethod.Post, new enctype = "multipart/form-data" ))
<div class="form-group">
<div class="pull-right">
<input type="submit" value="Update" name="jobsubmit" class="btn btn-success" />
</div>
</div>
@ Html.RenderAction("Index", "EMP_BENEFITS", new id = Model.eMP.lineno );
@using (Html.BeginForm("Edit", "EMPs", FormMethod.Post, new enctype = "multipart/form-data" ))
<div class="form-group">
<div class="pull-right">
<input type="submit" value="Update" name="otherssubmit" class="btn btn-success" />
</div>
</div>
EMPsController
public ActionResult Edit([Bind(Include = "lineno,EMPNO,IDNO..")] EMP eMP)
if (ModelState.IsValid)
if (Request.Form["personalsubmit"] != null)
db.Entry(eMP).State = EntityState.Modified;
db.SaveChanges();
if (Request.Form["jobsubmit"] != null)
db.Entry(eMP).State = EntityState.Modified;
db.SaveChanges();
if (Request.Form["otherssubmit"] != null)
db.Entry(eMP).State = EntityState.Modified;
db.SaveChanges();
return Redirect(Request.UrlReferrer.PathAndQuery);
return View(eMP);
我无法将它们全部都放在一种形式中,因为我在它们之间使用了一个ajax beginForm作为另一种粗糙方法。由于我读过不建议使用嵌套形式。
是否有一种方法可以保存一个表单而不清除其他表单的值?
答案
是否有一种方法可以保存一个表单而不清除其他表单的值?
您可以简单地将ajax.beginform用于每种形式;How to use Simple Ajax Beginform in Asp.net MVC 4?
或者您可以制作自己的Ajax实现https://www.c-sharpcorner.com/blogs/using-ajax-in-asp-net-mvc
或者您可以继续并绑定模型中的所有内容;
// don't need to specify which properties to bind, all of the available properties in your view will be bound to the model on POST
public ActionResult Edit(EMP eMP)
if(eMP.FirstName!=null ...)
// ... do some checking depending on what values are submitted
// save profile here
// when you return the view
return View(eMP);
但是对于这种方法,您只需要为Personal,Job和Others提供1种形式。
@ Html.RenderAction("Index", "EMP_REFERENCE", new id = Model.eMP.lineno );
@ Html.RenderAction("Index", "EMP_BENEFITS", new id = Model.eMP.lineno );
@using (Html.BeginForm("Edit", "EMPs", FormMethod.Post, new enctype = "multipart/form-data" ))
<!--put all your employee input fields here-->
<div class="form-group">
<div class="pull-right">
<input type="submit" value="Update" name="submit" class="btn btn-success" />
</div>
</div>
<!--put all your job input fields here-->
<div class="form-group">
<div class="pull-right">
<input type="submit" value="Update" name="submit" class="btn btn-success" />
</div>
</div>
<!--put all your others input fields here-->
<div class="form-group">
<div class="pull-right">
<input type="submit" value="Update" name="submit" class="btn btn-success" />
</div>
</div>
以上是关于在一个视图页面中有多种形式的主要内容,如果未能解决你的问题,请参考以下文章
多种动态形式,e.preventDefault();未正确触发