这可能是一个非常愚蠢的问题,但我是MVC的新手,我只是不知道如何做到这一点。我需要根据变量状态返回不同的视图。当我尝试在条件语句中返回部分视图时,该方法给出的错误是不返回任何值。这是我想要做的事情的想法。
if (status == 1)
{
return PartialView("partial1", model);
}
if (status == 2)
{
return PartialView("partial2", model);
}
if (status == 3)
{
return PartialView("partial3", model);
}
答案 0 :(得分:2)
您需要其他或最终退货声明。
如果在没有等于1,2或3的状态的情况下调用您的函数怎么办?
例如,假设status = 4
:
public ActionResult SomeMethod(int status) //Assume 4 is passed in
{
if (status == 1)
{
return PartialView("partial1", model);
}
if (status == 2)
{
return PartialView("partial2", model);
}
if (status == 3)
{
return PartialView("partial3", model);
}
//We got here, but haven't returned anything!
}
我们需要函数来返回某些东西。我不确定什么对您的应用程序最有意义,但需要这样的东西。
public ActionResult SomeMethod(int status) //Assume 4 is passed in
{
if (status == 1)
{
return PartialView("partial1", model);
}
if (status == 2)
{
return PartialView("partial2", model);
}
if (status == 3)
{
return PartialView("partial3", model);
}
//We got here, so return some default or fallback Partial.
return PartialView("SomeFallbackPartial", model);
}
答案 1 :(得分:1)
如果一个控制器操作做得太多,您可能会遇到设计错误,但您可以通过以下方式解决问题......
添加默认值:
if (status == 1)
{
return PartialView("partial1", model);
}
if (status == 2)
{
return PartialView("partial2", model);
}
if (status == 3)
{
return PartialView("partial3", model);
}
return PartialView("default");
抛出异常:
if (status == 1)
{
return PartialView("partial1", model);
}
if (status == 2)
{
return PartialView("partial2", model);
}
if (status == 3)
{
return PartialView("partial3", model);
}
throw new CustomException("Invalid status");
由于他们都共享一个模型,也许您可以使用地图根据状态获取视图名称(如果它与状态的编号真的相同,则连接它)。
var viewName = string.format("partial{0}", status);
return PartialView(viewName, model);