ASP.NET MVC未找到视图“名称”或其主控

时间:2010-11-19 15:35:43

标签: asp.net-mvc

我遇到了View的问题。这是代码片段:

    public ActionResult AddAdvertisement()
    {
        ...
        return RedirectToAction("AdvCreated");
    }

    [HttpGet]
    public ActionResult AdvCreated()
    {
        return View("AdvCreated", "abc");
    }

然后我看到了错误

未找到“AdvCreated”视图或其主人。搜索了以下位置:

〜/查看/广告/ abc.master

〜/查看/共享/ abc.master

如果我只是转到网址http://localhost/AdvCreated,一切正常。为什么?

3 个答案:

答案 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");