Redirect和RedirectToAction之间的混淆
|
我正在研究MS证书(70-515)。
我对在网上找到的内容和在实践测试中阅读的内容感到困惑。
关于SO的一些问题指出,使用RedirectToAction正在向浏览器发送302,从而导致其在地址栏中更改其网址。
但这是来自实践测试之一的问题:
题:
MVC Home控制器当前仅具有默认的Index操作。相关代码显示在以下代码示例中。
public ActionResult Index()
{
ViewData[\"Message\"] = \"Hello!\";
return View();
}
您需要创建一个名为FindID的操作,该操作显示在路径中输入的ID参数。如果路径不包含ID参数,则ASP.NET必须在不更改浏览器地址栏中URL的情况下处理Index操作,并且不得引发异常。
您应该使用哪个代码段?
正确答案:
public ActionResult FindID(int? id)
{
if (!id.HasValue)
return RedirectToAction(\"Index\");
ViewData[\"Message\"] = \"ID is \" + id.ToString();
return View();
}
说明:
您可以使用ActionResult的RedirectToAction形式来使MVC处理动作中的其他动作。 MVC放弃当前操作并处理请求,就像路由直接导致您重定向到的操作一样。从本质上讲,这等效于在标准ASP.NET应用程序中调用Server.Transfer。
重定向ActionResult向浏览器发送一个“ HTTP错误302-找到\”响应,这将导致浏览器加载指定的URL。这将更改显示在地址栏中的地址。
所以:
-RedirectToAction是否使浏览器中的URL保持不变?
-重定向会更改浏览器中的URL吗?
-练习测试的说明正确吗?从中我了解到RedirectToAction不会执行302。
没有找到相关结果
已邀请:
2 个回复
版萍层分
但是,我不推荐这种方法。如果我向
请求,而
不存在,则应使用相关的状态码(对于搜索引擎也很重要)通知用户。 如果FindID动作的唯一目的是对id参数进行操作,则它不应为可为空/可选。这样,如果未指定ID,则不会调用FindID操作。
茶鬼失形
对象,该对象会导致重定向,因此该文档是正确的:
对测试问题的正确答案是使用不同的视图:
这将使用视图
,而不是无参数调用
返回的视图
。