2

我正在尝试做一些非常简单的事情,但我似乎遗漏了一些东西。我试图在互联网上搜索结果,但没有得到任何结果,所以我想知道是否有人可以就这个看似简单直接的任务提出建议。

我有一个工作的 MVC 应用程序,并使用默认值(脚手架)创建了模型、控制器、视图。

现在我想为我的控制器操作之一创建一个新视图:

public ActionResult Index()
        {
            return View(db.Blog.ToList());
        }

所以我右键单击操作结果,然后单击添加视图。这给了我一个对话框,我在其中指定了“测试”的视图名称,单击“创建强类型视图”复选框并选择博客的模型类。对于脚手架模板,我留空(注意我尝试过索引但没有任何好的结果)现在我单击添加按钮。

正如预期的那样,这在 Views/Blogs 下创建了一个新视图 test.cshtml

现在,当我开始没有调试并转到 url: localhost:12341/Blog/Test

我收到以下错误:

“/”应用程序中的服务器错误。

无法找到该资源。说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的 URL:/Blog/test


版本信息:Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.0.30319.17929

4

2 回答 2

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 属性。

于 2012-10-01T04:52:16.083 回答
3

您的操作方法称为索引,而不是测试。如果你希望url是/Test,那么你需要将动作方法命名为Test(还有其他方法可以做到,但这是最好的方法)

如果你想使用视图测试,那么你需要在你的 View() 方法中指定它。

return View("Test", db.Blogs.ToList());

但是,您仍然需要使用索引 url /Blogs/Index,因为您的操作方法是 Index。

于 2012-10-01T01:21:25.550 回答