我觉得我在这里违反了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);
答案 0 :(得分:1)
修复它,我只需要将报告分支上的view命令更改为:
return View("ReportView", model);