ASP.NET MVC View按模型值查找

时间:2014-07-22 13:20:45

标签: asp.net asp.net-mvc view

由于某种原因,视图引擎正在根据作为视图模型传递的字符串值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);

2 个答案:

答案 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