在一个视图页面中有多种形式

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作为另一种粗糙方法。由于我读过不建议使用嵌套形式。

是否有一种方法可以保存一个表单而不清除其他表单的值?

答案

是否有一种方法可以保存一个表单而不清除其他表单的值?

  1. 您可以简单地将ajax.beginform用于每种形式;How to use Simple Ajax Beginform in Asp.net MVC 4?

  2. 或者您可以制作自己的Ajax实现https://www.c-sharpcorner.com/blogs/using-ajax-in-asp-net-mvc

  3. 或者您可以继续并绑定模型中的所有内容;

// 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();未正确触发

使用单选按钮显示/隐藏 div 的多种重力形式验证

Django - 使用多种形式

ASP.NET MVC 3以一种形式提交多个输入

如何在 Drupal 中以页面的形式更改“视图”的“日期字段”格式?

具有多种形式的jQuery验证插件和模糊验证[重复]