ASP.Net MVC根据条件返回局部视图

时间:2015-12-02 21:21:38

标签: c# asp.net-mvc

这可能是一个非常愚蠢的问题,但我是MVC的新手,我只是不知道如何做到这一点。我需要根据变量状态返回不同的视图。当我尝试在条件语句中返回部分视图时,该方法给出的错误是不返回任何值。这是我想要做的事情的想法。

if (status == 1)
{
    return PartialView("partial1", model);
}
if (status == 2)
{
   return PartialView("partial2", model);
}
if (status == 3)
{
    return PartialView("partial3", model);
}

2 个答案:

答案 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);