2015-12-02 77 views
-2

这可能是一个非常愚蠢的问题,但我是MVC的新手,我只是不知道该怎么做。我需要根据变量状态返回不同的视图。当我尝试返回条件语句内的部分视图时,该方法会提供没有返回值的错误。这是我想要做的事情的一个想法。ASP.Net MVC根据条件返回部分视图

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

我假定你的意思是'如果(状态== 1)' –

+0

发表您的整个控制器动作(固定代码后,看@StephenMueckes'评论),以及确切的错误消息。 – ataravati

+0

@StephenMuecke对此感到抱歉。我只是想输出一个简单的样本。 – hollyquinn

回答

2

您需要一个else或最终的return语句。

如果您的功能在状态等于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

你可能有一个设计错误,如果一个控制器动作做了许多事,但你可以解决您的问题以下列方式之一...

添加默认:

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

,因为他们都共享一个模型,也许你可以使用地图,让视图名称O基n状态(或者如果它与状态的编号相同,则将其连接)。

var viewName = string.format("partial{0}", status); 
return PartialView(viewName, model);