【问题标题】:How to create multi page form?如何创建多页表单?
【发布时间】:2020-03-07 19:28:01
【问题描述】:

我想为模型类学生制作一个包含两页的表单。我目前正在尝试将第一页中的数据传递到控制器中,该控制器会将学生作为模型传递给我的第二页视图,然后将传递给控制器​​以保存到我的数据库中,但仅保存第二页中的数据到数据库。

第 1 页

@model Student
<body>
    <div class="container1">
        <form asp-action="Page2" method="post" role="form">
            <div class=" form-group row">
                <label asp-for="FirstName" class="col-md-2 control-label"></label>
                <div class="col-md-5">
                    <input asp-for="FirstName" class="form-control" />
                </div>
            </div>

            <div class="form-group row">
                <div class="col-md-offset-2 col-md-5">
                    <input type="submit" class="btn btn-primary" value="Next" />
                </div>
            </div> 

第 2 页

@model Student
    <body>
        <div class="container1">
            <form asp-action="Submit" method="post" role="form">
                <div class=" form-group row">
                    <label asp-for="LastName" class="col-md-2 control-label"></label>
                    <div class="col-md-5">
                        <input asp-for="LastName" class="form-control" />
                    </div>
                </div>

                <div class="form-group row">
                    <div class="col-md-offset-2 col-md-5">
                        <input type="submit" class="btn btn-primary" value="Next" />
                    </div>
                </div> 

控制器

 [HttpPost]
        public IActionResult Page2(Reports report)
        {

            return View(report);
        }
        [HttpPost]
        public IActionResult Submit(Reports report)
        {
            _reportRepository.CreateReport(report);
            return View(report);
        }

【问题讨论】:

  • 据我了解,您在Page2 行动中错过了_reportRepository.CreateReport(report);

标签: c# .net asp.net-mvc entity-framework asp.net-core


【解决方案1】:

您需要将 FirstName 的表单字段添加到 Page2 的视图中,可以是隐藏字段或(假设您不希望修改)只读输入。

<input asp-for="FirstName" type="hidden" />

<input asp-for="FirstName" type="text" readonly />

只有具有某种successful control 的值才会包含在任何表单提交中。对于任何普通的旧 HTML 表单都是如此,它(一旦生成视图)就是您正在处理的内容。

如果您来自 WebForms 背景,在任何版本的 MVC 框架(完整框架或 .NET Core)中都没有 ViewState,因此作为开发人员,您可以在请求中保留这些值。

【讨论】:

  • 谢谢!这就是我一直在寻找的。​​span>
猜你喜欢
  • 1970-01-01
  • 2021-09-02
  • 2021-11-25
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
相关资源
最近更新 更多