我正在尝试做一些非常简单的事情,而我似乎错过了一些东西。我试图在互联网上搜索结果但是没有得到任何结果,所以我想知道是否有人可以就这看似简单明了的任务提出建议。
我有一个有效的MVC应用程序,并使用默认值(脚手架)创建了模型,控制器,视图。
现在我想为我的一个控制器操作创建一个新视图:
public ActionResult Index()
{
return View(db.Blog.ToList());
}
所以我右键单击Action Result并单击Add View。 这给了我一个对话框,我在其中指定视图名称“Test”,单击“Create a Strongly Typed View”复选框并选择Blog的模型类。 对于脚手架模板,我留空(注意我已尝试索引没有任何好结果) 现在我单击“添加”按钮。
正如预期的那样,这会在Views / Blogs
下创建一个新的视图test.cshtml现在,当我开始没有调试并转到url:localhost:12341 / Blog / Test
我收到以下错误:
2>'/'应用程序中的服务器错误。无法找到资源。 说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。
请求的网址:/ Blog / test
版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.17929
答案 0 :(得分:4)
可能存在很多问题,为什么它不起作用。研究ASP.NET MVC路由可能值得您花些时间。目前,Mystere Man的解决方案可能是一个“快速解决方案”,假设您已将其他所有内容设置为默认值。
特别是,当您告诉浏览器转到localhost:12341/Blog/Test
时,它(可能)会查找名为BlogController
的控制器,然后执行Test
操作。在您的情况下,您的操作称为Index
,因此您可以转到localhost:12341/Blog/Index
(尽管您可以省略Index
,因为这是默认操作)。最后,由于您的操作被称为Index
,因此View()
功能会自动查找Index.cshtml
。这在msdn文档中有详细说明:
http://msdn.microsoft.com/en-us/library/dd492930(v=vs.100).aspx
特别是:
如果ViewName属性为空,则使用当前操作名称代替ViewName属性。
答案 1 :(得分:3)
您的操作方法称为索引,而不是测试。如果你想要url是/ Test,那么你需要命名动作方法Test(还有其他方法可以做到,但这是最好的方法)
如果要使用视图测试,则需要在View()方法中指定它。
return View("Test", db.Blogs.ToList());
但是,您仍然需要使用索引网址/博客/索引,因为您的操作方法是索引。