我正在攻读MS证书(70-515).
我对在网上发现的内容和练习测试中的内容感到困惑.
关于SO的一些问题表明使用RedirectToAction正在向浏览器发送302,从而导致它在地址栏中更改它的url.
但这是一个练习测试的问题:
题:
MVC Home控制器目前只有默认的Index操作.相关代码显示在以下代码示例中.
public ActionResult Index()
{
ViewData["Message"] = "Hello!";
return View();
}
Run Code Online (Sandbox Code Playgroud)
您需要创建一个名为FindID的操作,该操作显示作为路径一部分输入的ID参数.如果路径不包含ID参数,则ASP.NET必须处理Index操作而不更改浏览器地址栏中的URL,并且不得抛出异常.您应该使用哪个代码段?
正确答案:
public ActionResult FindID(int? id)
{
if (!id.HasValue)
return RedirectToAction("Index");
ViewData["Message"] = "ID is " + id.ToString();
return View();
}
Run Code Online (Sandbox Code Playgroud)
说明:
您可以使用ActionResult的RedirectToAction形式使MVC处理动作中的不同操作.MVC放弃当前操作并处理请求,就像路由直接导致您重定向到的操作一样.实质上,这相当于在标准ASP.NET应用程序中调用Server.Transfer.
Redirect ActionResult向浏览器发送"HTTP Error 302 - Found"响应,这会导致浏览器加载指定的URL.这会更改地址栏中显示的地址.
所以:
- RedirectToAction是否保持浏览器中的URL不变?
- 重定向是否更改了浏览器中的URL?
- 练习测试的解释是否正确?据我所知,RedirectToAction不会做302.
asp.net-mvc ×1