ASP MVC2调用不同的视图

时间:2015-04-11 06:28:32

标签: asp.net asp.net-mvc-2

Hello其他程序员!

我目前被困在学校作业中。我正在使用ASP.NET,MVC2(我知道,它已经老了:()以下是这样的情况:我有一个控制器,他将决定使用if语句返回什么视图。例如:

这是我控制器中的方法:

public ActionResult Verification()
{
    String lastName = Request["lastName"];
    String name = Request["name"];
    String dob = Request["dob"];
    String phone = Request["phone"];
    String selection = Request["selection"];

    Verification verifying = new Verification(lastName, name, dob, phone, selection);

    String other = verifying.returnIfGood();

    if (!(other == ""))
    {
        return RedirectToAction("probleme1");
    }
    else
    {
        return RedirectToAction("probleme2");
    }
}

RedirectToAction似乎直接指向一个视图,但我还需要传递一个字符串来处理。我也注意到如果我在我的控制器中调用一个方法,没有返回视图,我有点困惑。我试图远离ajax和jquery,因为我还没有见过那些。有没有办法只使用c#?

2 个答案:

答案 0 :(得分:0)

这里你需要使用像

这样的查询字符串进行ajax调用
Controller/action?viewname='abc'

然后 获取 actionresult方法

然后在viewName的基础上重定向到操作

Redirect(controller/actionName)

答案 1 :(得分:0)

你的问题对于你想要完成的事情非常困惑,而且一些评论似乎表明对实际情况的误解。鉴于此,我将尝试解决您的问题,但可能会错过标记。

RedirectToAction并未“直接指向某个视图”。它会导致HTTP 302响应被发送到浏览器,并带有一个新的URL,然后浏览器转向并请求新的GET操作。

鉴于您尚未提供probleme1probleme2操作方法的代码,我不知道其他逻辑可能存在于那里。如果他们只是返回一个视图,你可以重写你的Verification方法来返回视图,并将“要使用的字符串”作为模型包含在内。

public ActionResult Verification()
{
    // code omitted for brevity...

    if (!(other == ""))
    {
        return View("probleme1", "some string");
    }
    else
    {
        return View("probleme2", "some other string");
    }
}

如果probleme1probleme2中的逻辑更复杂且您确实需要保留RedirectToAction方法,则可以在TempData中设置值Verification然后在其他方法中传递该值。

public ActionResult Verification()
{
    // code omitted for brevity...

    if (!(other == ""))
    {
        TempData.ModelString = "some string";
        return RedirectToAction("probleme1");
    }
    else
    {
        TempData.ModelString = "some other string";
        return RedirectToAction("probleme2");
    }
}

public ActionResult probleme1()
{
    return View(<view name>, TempData.ModelString);
}

在这种情况下,您需要使用TempData而不是ViewData,因为前者将在重定向后继续使用,而后者则不会。换句话说,TempData用于在重定向期间保持控制器操作之间的信息,ViewData用于将信息从控制器发送到视图。