ASP.Net MVC返回基于条件的部分视图

本文关键字:条件 视图 MVC Net 返回 于条件 ASP | 更新日期: 2023-09-27 18:25:21

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

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

ASP.Net MVC返回基于条件的部分视图

您需要一个else或一个最终返回语句。

如果在状态不等于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);
}

如果一个控制器操作做得太多,您可能会出现设计错误,但您可以通过以下方法之一解决问题。。。

添加默认值:

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