C# 在视图中使用多个模型过帐

C# 在视图中使用多个模型过帐,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,因此,我有一个视图,其中包含2个模型。每个型号都有自己的表单和提交按钮 目前,我有两个提交按钮是由相同的控制器方法处理的,并使用反射确定传递了哪种模型类型。但似乎有更好的方法。。。有什么想法吗 我有这样的想法: 型号: public class Model1 { // Elements } public class Model2 { // Elements } 控制器: public ViewResult ConMeth(Object model) { Type t = mode

因此,我有一个
视图
,其中包含2个
模型
。每个
型号
都有自己的表单和提交按钮

目前,我有两个提交按钮是由相同的
控制器
方法处理的,并使用
反射
确定传递了哪种模型类型。但似乎有更好的方法。。。有什么想法吗

我有这样的想法:

型号:

public class Model1
{
  // Elements
}

public class Model2
{
  // Elements
}
控制器:

public ViewResult ConMeth(Object model)
{
  Type t = model.GetType();
  if(t == typeof(Model1)
  {
    // Do work for Model1
  }
  else if(t == typeof(Model2)
  {
    // Do work for Model2
  }
  else
  {
    // Do something else...
  }
}

如果您显示视图信息,我怀疑您在视图中发生了两件不同的事情。只要把每件事都以它自己的形式,并使用

@using (Html.BeginForm(...)){}
并在BeginForm参数中按名称和控制器(如有必要)指定操作。。。这将消除不明确的引用错误


是一个带有较旧(不是razor)标签的示例

如果显示视图信息,我怀疑视图中发生了两件不同的事情。只要把每件事都以它自己的形式,并使用

@using (Html.BeginForm(...)){}
并在BeginForm参数中按名称和控制器(如有必要)指定操作。。。这将消除不明确的引用错误

例如,使用较旧的(不是razor)标记,您可以在视图中使用元组来创建两个视图模型,然后在每个表单的@Html.BeginForm()helper方法中,您可以指定到两个不同控制器的POST来处理表单数据

@model Tuple<ProjectName.Models.Model1, ProjectName.Models.Model2>
@模型元组
您可以在视图中使用一个元组来拥有两个视图模型,然后在每个表单的@Html.BeginForm()helper方法中,您可以指定到两个不同控制器的POST来处理表单数据

@model Tuple<ProjectName.Models.Model1, ProjectName.Models.Model2>
@模型元组

想要执行同一控制器操作的动力是什么。。。发布到单独的操作会消除这个问题。你想要一个使用ajax或常规回发的示例吗?@Rikon:这就是我计划的路径。但我不断得到:
当前对控制器类型“ConMeth”的操作“Manage”的请求在以下操作方法之间不明确
@FeistyMango:Postbackidea@AlexeiLevenkov我总是认为(也许是错误的),查看元数据(<代码> GETType()>代码>是一种反射的形式。方法就是感觉不一样:)想要执行相同控制器操作的动力是什么。。。发布到单独的操作会消除这个问题。你想要一个使用ajax或常规回发的示例吗?@Rikon:这就是我计划的路径。但我不断得到:
当前对控制器类型“ConMeth”的操作“Manage”的请求在以下操作方法之间不明确
@FeistyMango:Postbackidea@AlexeiLevenkov我总是认为(也许是错误的),查看元数据(<代码> GETType()>代码>是一种反射的形式。方法就是感觉不一样:)doh!明显地这把它修好了!明显地这把它修好了。