加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何在asp.net MVC 5中创建表单

发布时间:2020-12-16 00:24:06 所属栏目:百科 来源:网络整理
导读:我已经习惯了网络表单,但我转而使用MVC 5并且有关于创建多步骤申请表的问题. 此表单就像一个向导,然后将显示在每个步骤中输入的信息,然后提交. 是否更容易在.cshtml中使用html表单编写或在控制器中完成所有操作? 谢谢 解决方法 顾名思义,MVC有一个模型,一个
我已经习惯了网络表单,但我转而使用MVC 5并且有关于创建多步骤申请表的问题.

此表单就像一个向导,然后将显示在每个步骤中输入的信息,然后提交.

是否更容易在.cshtml中使用html表单编写或在控制器中完成所有操作?

谢谢

解决方法

顾名思义,MVC有一个模型,一个视图和一个控制器.要创建表单,请设置一个将充当模型的类,其中包含需要在特定视图中使用的属性.这与您的实体不同,后者对应于数据库中的表.有时您可以将实体用作模型,但特别是在多步形式的情况下,您不希望将数据持久到结束,这意味着它们需要分开.

这将我们带到视图模型的主题,它实际上来自另一种称为MVVM的模式.无论如何,这些视图的模型将是一系列视图模型,其中仅包含特定步骤需要收集的信息.最后,您将通过创建实体实例并将每个视图模型中的属性值映射到它来将所有收集的数据组合在一起.然后,您将保存实体.

现在,只要在请求之间保持收集的数据,就是会话进入的地方.您只需将每个发布的视图模型添加到Session对象中,然后最后从Session对象中获取所有这些模型以创建你的实体.

因此,每个POST操作都将具有以下内容:

[HttpPost]
public ActionResult Step1(Step1ViewModel model)
{
    if (ModelState.IsValid)
    {
        Session["Step1"] = model;
        return RedirectToAction("Step2");
    }

    // errors
    return View(model);
}

然后,你最后的POST动作:

[HttpPost]
public ActionResult StepFinal(StepFinalViewModel)
{
    if (ModelState.IsValid)
    {
        var myEntity = new MyEntity();

        var step1 = Session['Step1'] as Step1ViewModel;
        myEntity.SomeField = step1.SomeField;
        // ... repeat for field in view model,then for each step


        db.MyEntities.Add(myEntity);
        db.SaveChanges();

        Session.Remove('Step1');
        // repeat for each step in session

        return RedirectToAction("Success");
    }

    // errors
    return View(model);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读