从下拉列表中获取值并将其保存到数据库中,如果已经存在,则显示一些消息

本文关键字:如果 存在 显示 消息 数据库 获取 下拉列表 保存 | 更新日期: 2023-09-27 18:12:21

嗨,我有一个下拉列表我想把列表中的值保存到数据库中这是我在控制器类

中的动作方法
public ActionResult NewRequest(Bookinfo bookinfo)
    {
        using (var db = new Database1Entities1())
        {
            return View(db.Bookinfoes.ToList());
        }
    }

这是我的视图下拉列表

@model IEnumerable<MvcApplication.Models.Bookinfo>
@{
   ViewBag.Title = "NewRequest";
 }
  <h2>NewRequest</h2>
<table>
<tr>
    <td>
        @Html.DropDownList("Bookname", Model.Select(m => new SelectListItem() { Text = m.Bookname, Value = m.Bookname }).ToList())
    </td>
    @*<td>
        @Html.DropDownList("Authorname", Model.Select(m => new SelectListItem() { Text = m.Authorname, Value = m.Authorname }).ToList())
    </td>
    <td>
        @Html.DropDownList("Publishername", Model.Select(m => new SelectListItem() { Text = m.Publishername, Value = m.Publishername }).ToList())
    </td>
    <td> </td>*@
</tr>
<tr> <td> <input type = submit value="Reserve" name="Reserve"></td></tr>
</table>

我想把这个值保存在一个名为published的表中,它表示书是在当前日期发行的,如果书已经在那里,我想显示一些消息

这是我的数据库结构或者更确切地说是已发布表的结构

 CREATE TABLE [dbo].[Issued] (
  [BookId]  INT      NOT NULL,
  [date]    DATETIME NOT NULL,
  [IssueID] INT      IDENTITY (1, 1) NOT NULL,
  PRIMARY KEY CLUSTERED ([BookId] ASC),
  FOREIGN KEY ([BookId]) REFERENCES [dbo].[Bookinfo] ([Id])
   };

从下拉列表中获取值并将其保存到数据库中,如果已经存在,则显示一些消息

一种方法是让数据库捕获这类错误。

通过添加如下语句使您的字段Issued.BookId唯一:

CREATE TABLE [dbo].[Issued] (
    [BookId]  INT      NOT NULL,
    [date]    DATETIME NOT NULL,
    [IssueID] INT      IDENTITY (1, 1) NOT NULL,
    PRIMARY KEY CLUSTERED ([BookId] ASC),
    FOREIGN KEY ([BookId]) REFERENCES [dbo].[Bookinfo] ([Id])
    CONSTRAINT AK_IssueId UNIQUE(IssueId) 
};

然后,当您尝试为相同的BookIdIssued添加新记录时,将抛出SqlException。捕获此异常并显示错误消息。