使用MVC 5添加到表中,并在删除记录后重置ID

海法

我有两个问题:

首先,我编写了一个代码,将医生添加到数据库中,开始时代码工作正常,但是在添加验证后,医生信息未添加到表中。当我按添加按钮时,URL转到:/ Doctors / Save为何执行数据没有保存在数据库中?为什么在按下添加按钮后,程序无法将我重定向到添加视图?

在控制器中,Add()操作适用于包含添加表单的“添加”视图。.Save()操作适用Html.BeginForm("Save","Doctors")Add视图内部的“ 。”。

这是我的代码:

public ActionResult Add()
    {  return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Save(Doctor doctor)
    {
        if (!ModelState.IsValid)
        {
            var viewModel = new DoctorViewModel
            {
                Doctor = doctor

            };
            return View("Add", viewModel);
        }

      if(doctor.Id == 0) {
      _context.Doctors.Add(doctor);
      _context.SaveChanges();
      return Redirect("Add");
        }
      else
      {
          var doctorInDb = _context.Doctors.Single(c => c.Id == doctor.Id);
          doctorInDb.Name = doctor.Name;
          doctorInDb.Symbol = doctor.Symbol;
          doctorInDb.Office = doctor.Office;
          doctorInDb.Phone = doctor.Phone;
          doctorInDb.Email = doctor.Email;
          _context.SaveChanges();
          return Redirect("Add");
        }

       } 

添加视图:

@model Project.ViewModels.DoctorViewModel

@{
    ViewBag.Title = "Add";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Adding a Doctor</h2>

@using (Html.BeginForm("Save", "Doctors"))
{
    <div class="form-group">

        @Html.LabelFor(m => m.Doctor.Name)
        @Html.TextBoxFor(m => m.Doctor.Name , new { @class = "form-control"})
        @Html.ValidationMessageFor(m => m.Doctor.Name)
    </div>

    <div class="form-group">

        @Html.LabelFor(m => m.Doctor.Symbol)
        @Html.TextBoxFor(m => m.Doctor.Symbol, new { @class = "form-control" })
        @Html.ValidationMessageFor(m => m.Doctor.Symbol)
    </div>
    <div class="form-group">
        @Html.LabelFor(m => m.Doctor.Phone)
        @Html.TextBoxFor(m => m.Doctor.Phone, new { @class = "form-control" })
        @Html.ValidationMessageFor(m => m.Doctor.Phone)
    </div>


    <div class="form-group">
        @Html.LabelFor(m => m.Doctor.Office)
        @Html.TextBoxFor(m => m.Doctor.Office, new { @class = "form-control" })
    </div>



    <div class="form-group">
        @Html.LabelFor(m => m.Doctor.Email)
        @Html.TextBoxFor(m => m.Doctor.Email, new { @class = "form-control" })
    </div>

    @Html.HiddenFor(m => m.Doctor.Id)
    @Html.AntiForgeryToken()
    <button type="submit" class="btn btn-primary"> <h5> Add </h5> </button>     @Html.ActionLink("Go to doctors list", "DoctorList")
}

    @section scripts{
        @Scripts.Render("~/bundles/jqueryval")

        }

第二个问题:

从表中删除所有记录后,是否可以从控制器中重置ID?

这是我的重置代码:

public ActionResult Reset()
    {
        _context.PSRs.RemoveRange(_context.PSRs);

        _context.SaveChanges();
        return Redirect("PSR");
    }

谢谢!

告诉我

好吧,对于您所说的,我相信:

首先,我编写了一个代码,将医生添加到数据库中,开始时代码工作正常,但是在添加验证后,医生信息未添加到表中。当我按添加按钮时,URL转到:/ Doctors / Save为何执行数据没有保存在数据库中?

似乎数据未保存在数据库中的原因是因为您的模型无效:

    if (!ModelState.IsValid)
    {
        var viewModel = new DoctorViewModel
        {
            Doctor = doctor

        };
        return View("Add", viewModel);
    }

因此,您可以调试代码以查看其无效的原因。如果需要,可以插入以下代码:

var message = string.Join(" | ", ModelState.Values
    .SelectMany(v => v.Errors)
    .Select(e => e.ErrorMessage));

之前var viewModel和其上的一个断点,因此您在调试期间无需在属性中导航。

为什么在按下添加按钮后,程序无法将我重定向到添加视图?

在控制器中,Add()操作用于包含添加表单的Add视图。Save()操作用于Add视图内部的Html.BeginForm(“ Save”,“ Doctors”)。

您没有被重定向到“添加视图”,因为您没有成功保存医生(ModelState无效),因此它仅呈现“添加”视图(URL保持为/ Doctors / Save),而不重定向到该视图。

第二个问题:

从表中删除所有记录后,是否可以从控制器中重置ID?

不知道这个问题的答案,也许您应该将问题分成两部分,这样人们才可以回答一个问题,而不能回答另一个问题。

问候,

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何防止将相同的数据添加到列表中并在 MVC 5 中删除/编辑该数据后重新使用它?

来自分类Dev

将用户添加到表并在用户注册时将数据添加到第二个表时使用用户 ID

来自分类Dev

使用Java将多个值添加到列表后,仅检索迭代中的最新记录

来自分类Dev

找不到方法:使用MVC httppost将行添加到Azure表存储中

来自分类Dev

使用sas或sql根据月度日期变量将新记录添加到表中

来自分类Dev

Oracle 使用包中定义的类型作为添加到定义类型表的记录

来自分类Dev

使用jQuery进行AJAX删除后,将文本自动添加到div中

来自分类Dev

在 IIS 中托管数据后,使用 Asp.Net MVC-5 将数据添加到 MS-SQL 时出错

来自分类Dev

AJAX:将新行添加到表中或使用AJAX删除

来自分类Dev

使用jQuery将“删除”按钮动态添加到HTML表中

来自分类Dev

AJAX:将新行添加到表中或使用AJAX删除

来自分类Dev

使用查询中返回的ID将新行添加到表中

来自分类Dev

使用Sqlite将自动递增ID列添加到现有表中

来自分类Dev

使用 jquery 中的引导表将 id 添加到动态创建的行

来自分类Dev

MVC删除后将数据库记录追加到表

来自分类Dev

如何使用+ =删除添加到段落中的文本

来自分类Dev

ASP MVC-使用EF Code First将列添加到所有表

来自分类Dev

如何将ssh密码添加到Docker并在使用后将其删除?

来自分类Dev

使用JavaScript添加到正文时,HTML5 Canvas会重置

来自分类Dev

使用实体框架将测试项目添加到MVC

来自分类Dev

MVC 5使用jquery将动态字段添加到表单并将其保存到模型

来自分类Dev

如何使用Razor / MVC 5将元素动态添加到下拉列表

来自分类Dev

MVC中的会话使用

来自分类Dev

MVC中的会话使用

来自分类Dev

使用指令将多行项目添加到表中

来自分类Dev

使用UJS将行动态添加到表中

来自分类Dev

如何使用Jinja将列添加到表中

来自分类Dev

使用jQuery将HTML标签添加到表中

来自分类Dev

使用Visual Studio将数据添加到表中

Related 相关文章

  1. 1

    如何防止将相同的数据添加到列表中并在 MVC 5 中删除/编辑该数据后重新使用它?

  2. 2

    将用户添加到表并在用户注册时将数据添加到第二个表时使用用户 ID

  3. 3

    使用Java将多个值添加到列表后,仅检索迭代中的最新记录

  4. 4

    找不到方法:使用MVC httppost将行添加到Azure表存储中

  5. 5

    使用sas或sql根据月度日期变量将新记录添加到表中

  6. 6

    Oracle 使用包中定义的类型作为添加到定义类型表的记录

  7. 7

    使用jQuery进行AJAX删除后,将文本自动添加到div中

  8. 8

    在 IIS 中托管数据后,使用 Asp.Net MVC-5 将数据添加到 MS-SQL 时出错

  9. 9

    AJAX:将新行添加到表中或使用AJAX删除

  10. 10

    使用jQuery将“删除”按钮动态添加到HTML表中

  11. 11

    AJAX:将新行添加到表中或使用AJAX删除

  12. 12

    使用查询中返回的ID将新行添加到表中

  13. 13

    使用Sqlite将自动递增ID列添加到现有表中

  14. 14

    使用 jquery 中的引导表将 id 添加到动态创建的行

  15. 15

    MVC删除后将数据库记录追加到表

  16. 16

    如何使用+ =删除添加到段落中的文本

  17. 17

    ASP MVC-使用EF Code First将列添加到所有表

  18. 18

    如何将ssh密码添加到Docker并在使用后将其删除?

  19. 19

    使用JavaScript添加到正文时,HTML5 Canvas会重置

  20. 20

    使用实体框架将测试项目添加到MVC

  21. 21

    MVC 5使用jquery将动态字段添加到表单并将其保存到模型

  22. 22

    如何使用Razor / MVC 5将元素动态添加到下拉列表

  23. 23

    MVC中的会话使用

  24. 24

    MVC中的会话使用

  25. 25

    使用指令将多行项目添加到表中

  26. 26

    使用UJS将行动态添加到表中

  27. 27

    如何使用Jinja将列添加到表中

  28. 28

    使用jQuery将HTML标签添加到表中

  29. 29

    使用Visual Studio将数据添加到表中

热门标签

归档