C#MVC - 在同一页面中具有多个表的CRUD操作

时间:2016-09-16 16:03:16

标签: c# asp.net-mvc crud

我完全得到了MVC脚手架和CRUD操作。然而,只有一个表(模型)就是这种情况。如果我必须从同一页面更新多个表格,我该怎么做?假设我需要更新Table1,Table2和Table3。以下我有我的代码:

型号:

 public class MultipleTableModel
{

    public List<Database.Table1> Table1 { get; set; }
    public List<Database.Table2> Table2 { get; set; }
    public List<Database.Table3> Table3 { get; set; }      
}

(我故意省略了各个表格的模型,因为这里没有相关性和/或重要性。一个模型的CRUD操作简单明了。)

现在在我的视图页面中,我使用的是MultipleTableModel,而不是只使用一个模型,所以我可以在同一个表单中对所有三个表进行更改。

查看:

@model MyApp.Models.MultipleTableModel

@using(Html.BeingForm("Action", "Controller", FormMethod.Post)) {
  @foreach (var t1 in Model.Table1)
    {
        *Some code binding values of Table 1 to html elements

    }
}

同样,我重复了Table2和Table3的foreach循环。最后,提交按钮将整个表单提交给其控制器。我试图在控制器中接收这些值的方式如下:

    [HttpPost]
    public ActionResult Edit(Table1 t1, Table2 t2, Table3 t3)
    {
        *code to maniupate t1, t2, t3*
        return View();
    }

或者我甚至可以尝试:

    [HttpPost]
    public ActionResult Edit(MultipleTableModel allTables)
    {
        *code to maniupate allTables*
        return View();
    }

第一种方法对我不起作用,返回全部为null。我没有尝试过第二种方法,这只是一个想法,不确定它是否有效。

我的问题是,是否有可能做我正在尝试的事情?通过创建一个由所有其他模型(Table1,Table2等)组成的新模型(MultipleTableModel),为多个模型实现同一页面的CRUD操作。或者还有其他(更好,更容易)的方式吗?

感谢。

0 个答案:

没有答案