MVC如何在IF语句后返回视图

时间:2013-02-15 14:28:33

标签: c# asp.net-mvc

我的页面有一个搜索框,有几个单选按钮。根据选择的单选按钮取决于显示的视图。

但是,我不知道如何返回视图。

我的代码是

 public ActionResult Index(string jobType)
    {
        if (jobType.ToLower() == "this")
            CandidateResults();
        else
            JobResults();
    }

    private ActionResult CandidateResults()
    {
        var model = //logic
        return View(model);
    }
    private ActionResult JobResults()
    {
        var model = //logic
        return View(model);
    }

但是屏幕上没有显示任何内容(白页)。这是有道理的但我想要返回索引,我想返回一个新页面(称为JobResults或Candidates)并为这两个新页面创建一个View但是当我右键单击时我的方法(JobResults()或Candidates())我没有选择添加视图。

在这个阶段,我迷路了,任何人都可以给出建议。

5 个答案:

答案 0 :(得分:3)

从Index返回视图或重定向到CandidateResults或JobResults操作。

public ActionResult Index(string jobType)
{
    if (jobType.ToLower() == "this")
        return CandidateResults();
    else
        return JobResults();
}

private ActionResult CandidateResults()
{
    var model = //logic
    return View(model);
}
private ActionResult JobResults()
{
    var model = //logic
    return View(model);
}

答案 1 :(得分:2)

试试这个

public ActionResult Index(string jobType)
{
    return (jobType.ToLower() == "this") ?
        RedirectToAction("CandidateResults") :
        RedirectToAction("JobResults");
}

private ActionResult CandidateResults()
{
    var model = //logic
    return View(model);
}
private ActionResult JobResults()
{
    var model = //logic
    return View(model);
}

答案 2 :(得分:1)

在私人方法中,您必须指定要显示的实际视图。

public ActionResult Index(string jobType)
{
    if (jobType.ToLower() == "this")
        CandidateResults();
    else
        JobResults();
}

private ActionResult CandidateResults()
{
    var model = //logic
    return View("CandidateResults", model);
}
private ActionResult JobResults()
{
    var model = //logic
    return View("JobResults", model);
}

这是因为视图引擎的工作方式。调用索引函数时,当前请求的操作名称始终为Index。即使您调用另一个方法,视图引擎也将使用当前操作的名称而不是当前正在执行的函数的名称。

答案 3 :(得分:0)

只需要将用户重定向到正确的控制器方法,该方法将返回其View,如下所示:

public ActionResult Index(string jobType)
    {
        if (jobType.ToLower() == "this")
            return RedirectToAction("CandidateResults","ControllerName");
        else
            return RedirectToAction("JobResults","ControllerName");
    }

答案 4 :(得分:0)

public ActionResult Index(string jobType)
{
    if (jobType.ToLower() == "this")
        return RedirectToAction("CandidateResults");

    return RedirectToAction("JobResults");
}

private ActionResult CandidateResults()
{
    var model = //logic
    return View(model);
}
private ActionResult JobResults()
{
    var model = //logic
    return View(model);
}