MVC Обновление модели и создание (несколько) одновременно с использованием хранимой процедуры - PullRequest
1 голос
/ 27 апреля 2020

Контроллер в том числе:

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; }

}

У меня возникает проблема, что Редактировать Контроллер не принимает Акт в качестве параметра.

Бросить исключение -

"для этого словаря требуется элемент модели типа '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

1 Ответ

0 голосов
/ 28 апреля 2020

Решение состоит в том, чтобы добавить строки преобразования:

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);
}

Все еще неуклюжий метод для возврата значения в представление, но пока он работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...