2015-04-15 221 views
10

我想根據isCustomerEligible的值將用戶發送到兩個不同頁面中的一個。當該變量的值設置爲false時,它會調用Index,但返回Customer的視圖,而不是Index的視圖。返回不同視圖ASP.NET MVC中的相同控制器

public ViewResult Index() 
{ 
    return View(); 
} 

public ViewResult Customer() 
{ 
    DetermineCustomerCode(); 
    DetermineIfCustomerIsEligible(); 
    return isCustomerEligible ? View() : Index(); 
} 

回答

15

如果您只是返回View(),它將查找與您的操作同名的視圖。如果要指定返回的視圖,則必須將視圖的名稱作爲參數。

public ViewResult Customer() 
{ 
    DetermineCustomerCode(); 
    DetermineIfCustomerIsEligible(); 
    return isCustomerEligible ? View() : View("Index"); 
} 

如果你想真正使索引事件火,而不是隻返回其觀點,你必須返回一個RedirectToAction(),改變它的返回類型的ActionResult

public ActionResult Customer() 
{ 
    DetermineCustomerCode(); 
    DetermineIfCustomerIsEligible(); 
    return isCustomerEligible ? View() : RedirectToAction("Index"); 
} 
+0

:第二個將無法工作的看法,行動的是返回類型應該是'ActionResult' –

+0

那是什麼我算了一下,因此免責。我編輯了我的答案 – maccettura

5

所有您需要做的是返回你需要的視圖。

如果你想返回具有相同的名稱,你在你的動作視圖只需使用return View();

如果你想返回從操作方法,你是,那麼你指定的名稱不同的視點這樣return View("Index");

public ViewResult Index() 
    { 
     return View(); 
    } 

    public ViewResult Customer() 
    { 
     DetermineCustomerCode(); 
     DetermineIfCustomerIsEligible(); 
     return isCustomerEligible ? View() : View("Index"); 
    } 
相關問題