我最初在视图中有以下代码:
return RedirectToAction("Error", new { error = "User Already Exists" });
这导致View not found错误:
将代码更改为以下代码可以正常工作:
return RedirectToAction("Error", new { errorid = "User Already Exists" });
考虑到两者都只是字符串名称,我确信在两种情况下我都调用相同的重载,但是,我只是无法理解这里有什么问题/为什么它认为我需要一个不同的视图。
我做错了什么?
@SLaks'请求 -
public ActionResult Error(string errorid)
{
ViewBag.error = errorid;
return View();
}
(之前,errorid只是错误)
答案 0 :(得分:2)
最有可能发生的是您的Error
方法构建如
public ActionResult Error(string errorid) {
ViewBag.error = errorid;
return View(errorid);
}
而不是您使用ViewBag
。这将导致发生的确切错误。您可能将模型设为@model string
。这会失败并导致该错误的原因是因为View(string)
的签名假定您传递了您想要查看的视图(而不是模型)。在这种情况下要修复它,你需要做return View("Error", errorid);
之类的事情,其中第二个参数是你的模型。
答案 1 :(得分:1)
ASP.Net MVC将路由与使用参数名称的操作匹配。
因此,路径/ URL中的参数名称必须与操作的参数完全匹配。