Asp.net mvc ASP.NET MVC视图';名称';或者它的主人没有找到
我对视图有问题。下面是代码片段:Asp.net mvc ASP.NET MVC视图';名称';或者它的主人没有找到,asp.net-mvc,Asp.net Mvc,我对视图有问题。下面是代码片段: public ActionResult AddAdvertisement() { ... return RedirectToAction("AdvCreated"); } [HttpGet] public ActionResult AdvCreated() { return View("AdvCreated", "abc"); } 然后我看到了错误 未找到
public ActionResult AddAdvertisement()
{
...
return RedirectToAction("AdvCreated");
}
[HttpGet]
public ActionResult AdvCreated()
{
return View("AdvCreated", "abc");
}
然后我看到了错误
未找到视图“AdvCreated”或其主视图。搜索了以下位置:
~/Views/advision/abc.master
~/Views/Shared/abc.master
如果我只是去网址一切都是好的。为什么?据我所知,您试图传递一个字符串作为模型查看。这是不可能的。视图函数重载如下:
View(string viewName,string masterViewName)
因此,它将查找名为“abc”的主视图。如果要传递字符串,请将其转换为对象。下面是一个示例。您的视图/aspx/ascx需要位于列出的要使用的文件夹中,例如控制器中的代码 如果您只是这样做:
return RedirectToAction("AdvCreated");
ASP.NET MVC将假定您的控制器文件夹中有一个view/ascx/aspx,在您的情况下是~/Views/advision/文件夹或共享文件夹
如果要在假定文件夹之外显示特定视图,可以直接指定,例如:
return RedirectToAction("~/MyFolder/AdvCreated.ascx");
您需要执行以下操作
return View("AdvCreated", (object)"abc");
或者,如果您使用的是.NET 4,您甚至可以执行以下操作:
return View("AdvCreated", model: "abc");
这迫使框架使用正确的重载,将第二个参数视为模型。他说,如果他点击了,他就会得到错误。因此,将字符串传递给视图的唯一方法是将其存储在ViewData中?不。您可以将其转换为对象,然后在视图中仅使用ToString()方法显示它。查看我发布的示例,您将看到。如果您使用MVC3(任何版本),也可以在控制器中使用.NET 4.0 dynamic Property ViewModel,如ViewModel.MyString=“abc”;。然后,您可以通过view.MyString在视图中访问它。