一个动作中的两个模型

时间:2015-08-04 10:29:23

标签: c# asp.net-mvc

我觉得我在这里违反了MVC最佳实践,但我不知道如何。

我有一个带有两个不同名称的按钮的表单,所以当它被发布到动作时,我可以根据按下的按钮做不同的事情。

 @using (Html.BeginForm("Display", "PlayBoard")
// form properties
<button class="btn btn-primary" type="submit" name="Display">Filter PlayBoard</button>
<button class="btn btn-primary" type="submit" name="Report">Report View</button>

然后在控制器中:

[HttpPost, FlexAuthorize]
public ActionResult Display(FormInput filter )
{
    if (Request["Report"] != null)
    {  
          var model = queryRepository.Load<FormInput , ReportViewPlayBoardView>(filter);
          return View(model);
    }
    if (Request["Display"] != null)
    {
        var model = queryRepository.Load<FormInput , DisplayPlayBoardView>(filter);
        return View(model);
    }

当我单击报告按钮时,它会运行查询确定,但随后返回异常:“传入字典的模型项类型为'... ReportViewPlayBoardView',但此字典需要模型项输入'... DisplayPlayBoardView'。“

我并不真正理解为什么这必须是返回的DisplayBoardView模型。

编辑:修复它,我只需将报表分支上的view命令更改为:return View(“ReportView”,model);

1 个答案:

答案 0 :(得分:1)

修复它,我只需要将报告分支上的view命令更改为:

 return View("ReportView", model);