我遇到了View的问题。这是代码片段:
public ActionResult AddAdvertisement()
{
...
return RedirectToAction("AdvCreated");
}
[HttpGet]
public ActionResult AdvCreated()
{
return View("AdvCreated", "abc");
}
然后我看到了错误
未找到“AdvCreated”视图或其主人。搜索了以下位置:
〜/查看/广告/ abc.master
〜/查看/共享/ abc.master
如果我只是转到网址http://localhost/AdvCreated,一切正常。为什么?
答案 0 :(得分:8)
据我所知,您正在尝试将字符串传递给View作为模型。这是不可能的。 View函数有一个重载,如下所示:
View(string viewName,string masterViewName)
因此它会查找名为“abc”的主视图。如果要传递字符串,请将其转换为对象。有一个示例here。
答案 1 :(得分:5)
您需要执行以下操作
return View("AdvCreated", (object)"abc");
或者如果您使用的是.NET 4,您甚至可以这样做:
return View("AdvCreated", model: "abc");
这会强制框架使用正确的重载,将第二个参数视为模型。
答案 2 :(得分:1)
您的视图/ aspx / ascx需要位于其中一个列出的文件夹中,例如控制器中的代码。
如果你这样做:
return RedirectToAction("AdvCreated");
ASP.NET MVC将假设您的控制器文件夹中有一个view / ascx / aspx - 在您的情况下〜/ Views / Advertisement /文件夹或共享文件夹。
如果要在假定文件夹之外显示特定视图,则可以直接指定,例如:
return RedirectToAction("~/MyFolder/AdvCreated.ascx");