2015-12-02 76 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);