返回ASP.NET MVC中不同视图的同一个控制器

时间:2015-04-15 13:40:09

标签: c# asp.net-mvc

我想将用户发送到两个不同页面中的一个,具体取决于isCustomerEligible的值。当该变量的值设置为false时,它会调用Index,但会返回Customer的视图,而不是Index的视图。

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

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

2 个答案:

答案 0 :(得分:17)

如果您只是返回View(),它将查找与您的操作同名的视图。如果要指定返回的视图,则必须将视图的名称作为参数。

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

如果您想实际触发Index事件而不仅仅返回其视图,则必须返回RedirectToAction()并将返回类型更改为ActionResult

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

答案 1 :(得分:5)

您需要做的就是返回所需的视图。

如果您想要返回与您所处的操作同名的视图,请使用return View();

如果您希望返回与您所使用的操作方法不同的视图,请指定视图的名称,如return View("Index");

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

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