Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#MVC-在同一页面中使用多个表的CRUD操作_C#_Asp.net Mvc_Crud - Fatal编程技术网

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

C#MVC-在同一页面中使用多个表的CRUD操作,c#,asp.net-mvc,crud,C#,Asp.net Mvc,Crud,我完全理解MVC脚手架和CRUD操作。但是,只有一个表(模型)是这种情况。如果我必须更新同一页面中的多个表,我将如何更新?假设我需要更新表1、表2和表3。以下是我的代码: 型号: public class MultipleTableModel { public List<Database.Table1> Table1 { get; set; } public List<Database.Table2> Table2 { get; set; }

我完全理解MVC脚手架和CRUD操作。但是,只有一个表(模型)是这种情况。如果我必须更新同一页面中的多个表,我将如何更新?假设我需要更新表1、表2和表3。以下是我的代码:

型号:

 public class MultipleTableModel
{

    public List<Database.Table1> Table1 { get; set; }
    public List<Database.Table2> Table2 { get; set; }
    public List<Database.Table3> Table3 { get; set; }      
}
同样,我对表2和表3重复foreach循环。最后,submit按钮将整个表单提交给其控制器。我尝试在控制器中接收这些值的方式如下:

    [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。我还没有试过第二种方法,这只是一个想法,不确定它是否有效

我的问题是,有没有可能做我正在尝试的事情?通过创建包含所有其他模型(表1、表2等)的新模型(MultipleTableModel),在同一页面上实现多个模型的CRUD操作。或者还有其他(更好、更容易)的方法吗


谢谢。

通过“返回全部空值”您的意思是t1、t2和t3都为空吗?@SamIam yes t1 t2和t3都为空您不能使用
foreach
循环为集合中的项目生成表单控件。您需要为循环使用
,或为每种类型使用自定义
编辑器或模板。请参阅以获取解释。在任何情况下,如果编辑数据不使用数据模型,POST方法都需要是
public ActionResult Edit(MultipleTableModel allTables)
。为每种类型创建视图模型,以便父视图模型包含属性
public List Table1{get;set;}
etcby“returned all null”您的意思是t1、t2和t3都是null吗?@SamIam yes t1 t2和t3都是null您不能使用
foreach
循环为集合中的项生成表单控件。您需要为循环使用
,或为每种类型使用自定义
编辑器或模板。请参阅以获取解释。在任何情况下,如果编辑数据不使用数据模型,POST方法都需要是
public ActionResult Edit(MultipleTableModel allTables)
。为每种类型创建视图模型,以便父视图模型包含属性
公共列表表1{get;set;}
    [HttpPost]
    public ActionResult Edit(MultipleTableModel allTables)
    {
        *code to maniupate allTables*
        return View();
    }