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#?
答案 0 :(得分:0)
这里你需要使用像
这样的查询字符串进行ajax调用Controller/action?viewname='abc'
然后 获取 actionresult方法
然后在viewName的基础上重定向到操作。
或
Redirect(controller/actionName)
答案 1 :(得分:0)
你的问题对于你想要完成的事情非常困惑,而且一些评论似乎表明对实际情况的误解。鉴于此,我将尝试解决您的问题,但可能会错过标记。
RedirectToAction
并未“直接指向某个视图”。它会导致HTTP 302响应被发送到浏览器,并带有一个新的URL,然后浏览器转向并请求新的GET操作。
鉴于您尚未提供probleme1
和probleme2
操作方法的代码,我不知道其他逻辑可能存在于那里。如果他们只是返回一个视图,你可以重写你的Verification
方法来返回视图,并将“要使用的字符串”作为模型包含在内。
public ActionResult Verification()
{
// code omitted for brevity...
if (!(other == ""))
{
return View("probleme1", "some string");
}
else
{
return View("probleme2", "some other string");
}
}
如果probleme1
和probleme2
中的逻辑更复杂且您确实需要保留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
用于将信息从控制器发送到视图。