由于某种原因,视图引擎正在根据作为视图模型传递的字符串值I来搜索视图。我正在使用ASP.NET MVC 4。
这是我的动作方法的简化版本。这是显示错误情况,其中找不到标记,而是返回默认视图我返回不同的错误页面视图" TagNotFound":
public ActionResult Tagged()
{
string tag = "SomeValue";
return View("TagNotFound", tag);
}
视图TagNotFound.cshtml
存在,但搜索错误。这是我得到的错误:
The view 'TagNotFound' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Tag/SomeValue.cshtml
~/Views/Tag/SomeValue.vbhtml
~/Views/Shared/SomeValue.cshtml
~/Views/Shared/SomeValue.vbhtml
不是使用类来按照建议调用正确的重载,而是将字符串转换为对象。
return View("TagNotFound", (object)tag);
答案 0 :(得分:4)
那是因为the overload for the View()
method期望字符串成为视图的名称。
因此,字符串本身不能是视图模型。相反,您可以考虑将字符串放在ViewBag
:
ViewBag.tag = "SomeValue";
return View();
或仅使用该值创建视图模型:
public class TagViewModel
{
public string Tag { get; set; }
}
// elsewhere...
return View(new TagViewModel { Tag = "SomeValue" });
答案 1 :(得分:0)
根据MSDN,这是您要返回的内容:
protected internal ViewResult View(
string viewName,
string masterName
)
http://msdn.microsoft.com/en-us/library/dd470743(v=vs.118).aspx