【问题标题】:MVC model update and create (multiple) at the same time using stored procedure使用存储过程同时更新和创建(多个)MVC模型
【发布时间】:2020-08-10 13:39:53
【问题描述】:

控制器包括:

public ActionResult Edit(int? id)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    Hoạt_động act= db.Hoạt_động.Find(id); ;
    if (act== null)
    {
        return HttpNotFound();
    }
    IList<SelectListItem> mt = new List<SelectListItem>();

    Dropdownlist();

    return View(act);
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "Mã_Hoạt_động, Hoạt_Động, Mã_Chương_trình, Loại_hình, Thông_tin, Đáp_án, ActNội_dung, Thời_gian, Thời_gian_Kết_thúc, Thông_Báo, NoteNội_dung, Ngày")]MultipleActivityEditClass mt)
{
    if (ModelState.IsValid)
    {
        db.MultipleActivityEd(mt.Mã_Hoạt_động, mt.Hoạt_Động, mt.Loại_hình, mt.Thông_tin, mt.Đáp_án, mt.ActNội_dung, mt.Thời_gian, mt.Thời_gian_Kết_thúc, mt.Thông_Báo, mt.NoteNội_dung, mt.Ngày);
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    ViewBag.Mã_Chương_trình = new SelectList(db.Chương_trình, "Mã_Chương_trình", "Tên", mt.Mã_Chương_trình);
    return View(mt);
}

MultipleActivityEd

public class MultipleActivityEditClass
{
    public Nullable<int> Mã_Hoạt_động { get; }
    public string Hoạt_Động { get; set; }
    public Nullable<int> Mã_Chương_trình { get; set; }
    public string Loại_hình { get; set; }
    public string Thông_tin { get; set; }
    public string Đáp_án { get; set; }
    public string ActNội_dung { get; set; }
    public Nullable<System.DateTime> Thời_gian { get; set; }
    public Nullable<System.DateTime> Thời_gian_Kết_thúc { get; set; }

    //Another table
    public string Thông_Báo { get; set; }
    public string NoteNội_dung { get; set; }
    public Nullable<System.DateTime> Ngày { get; set; }

}

Edit 控制器不接受 act 作为参数。

抛出异常--

"这个字典需要一个类型的模型项 'WebApplication1.Models.MultipleActivityEditClass'"

我不知道如何解决此问题或将 act 转换为所需的模型项。

存储过程:

    @Id int,
    @ActName varchar(50),
    @Mã_Chương_trình int,
    @Loại_hình varchar(50),
    @Thông_tin varchar(50),
    @Đáp_án varchar(50),
    @ActNội_dung varchar(50),
    @Thời_gian datetime,
    @Thời_gian_Kết_thúc datetime,

    @NoteName varchar(50),
    @NoteNội_dung varchar(MAX),
    @Ngày date
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    update [Hoạt động]
    set 
    Tên = @ActName,
    [Mã Chương trình] = @Mã_Chương_trình,
    [Loại hình] = @Loại_hình,
    [Thông tin] = @Thông_tin,
    [Đáp án] = @Đáp_án,
    [Nội dung] = @ActNội_dung,
    [Thời gian] = @Thời_gian,
    [Thời gian Kết thúc] = @Thời_gian_Kết_thúc
    where [Mã Hoạt động] = @Id

    insert into [Thông báo]([Mã Hoạt động],Tên,[Nội dung],Ngày)
    values(@Id,@NoteName,@NoteNội_dung,@Ngày)
END

【问题讨论】:

  • 看起来您正在使用实体。实体有一个映射文件,将数据库表/属性映射到 c# 类。映射文件需要刷新。您更改了数据库或 c# 类,现在映射不一致。
  • 我使用的是 ASP.NET 4.6 MVC 模型,如何确保映射是一致的?进行更改时是否还可以检查其一致性?
  • 问题是我未能从 db 实体转换为类。我找到了解决办法

标签: c# sql sql-server asp.net-mvc stored-procedures


【解决方案1】:

解决方法是添加转换行:

public ActionResult Edit(int? id)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    Hoạt_động act= db.Hoạt_động.Find(id); ;
    if (act== null)
    {
        return HttpNotFound();
    }

    //Add these lines
    MultipleActivityEditClass mte = new MultipleActivityEditClass();
    mte.Mã_Hoạt_động = act.Mã_Hoạt_động;
    mte.Hoạt_Động = act.Tên;
    mte.Mã_Chương_trình = act.Mã_Chương_trình;
    mte.Loại_hình = act.Loại_hình;
    mte.Thông_tin = act.Thông_tin;
    mte.Đáp_án = act.Đáp_án;
    mte.ActNội_dung = act.Nội_dung;
    mte.Thời_gian = act.Thời_gian;
    mte.Thời_gian_Kết_thúc = act.Thời_gian_Kết_thúc;


    Dropdownlist();

    return View(act);
}

将值返回给视图仍然是一个笨拙的方法,但到目前为止它仍然有效

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 2018-03-16
    • 2022-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多