我正在学习Asp MVC。 我已经做了两年的WPF MVVM程序,但是我也需要学习ASP,这是我所知道的在我国的Web开发中常用的语言。而且我对c#也有所了解,所以我认为调整不会很难,但我已经在使我的网站工作时面临很多问题。我尝试阅读有关ASP和MVC但我通过做事和从错误中学习而不是阅读它。所以我决定尝试一下。
我使用Visual Studio Community Edition 2017创建了一个EMPTY MVC项目
我已经创建了布局页面和第一个控制器以及第一个视图,它完全正常工作。
这是截图
然后我创建第二个控制器。然后就出现了问题。
我为此创建了一个名为NewPostController
和ADD View
的新控制器
但是它创建了另一个带有View名称的文件夹,里面是它创建的视图
我不希望它以这种方式组织。
所以我将NewPost.cshtml
拖到了admin文件夹中。运行应用程序然后我收到错误说
The resource cannot be found.
Requested URL: /Admin/NewPost
我搜索了一个解决方案,但我无法解决问题
我尝试指定视图名称
public ActionResult NewPost()
{
return View("~/Admin/NewPost");
}
我阅读的大部分解决方案都是指定视图名称。但我无法使其发挥作用。我错过了什么?还是不明白?谢谢。
答案 0 :(得分:3)
MVC有一种命名约定,如果您的控制器名为FooController,那么您的视图应保留在文件夹名称Foo中。
在此控制器内,您将拥有
public ActionResult <name of view>
名称与视图完全相同,便于参考。
因此,当您在Foo文件夹下有一个视图时,该cshtml文件的名称是Hello 然后在FooController中,你有一个
public ActionResult Hello(//parameter here){
//body here
}
希望你理解我的解释。
也回答你的问题。我假设您希望将NewPost.cshtml作为admin文件夹的一部分。只需添加
public ActionResult NewPost()
到您的管理员控制器,然后您可以使用
localhost/admin/NewPost()
如果我错过了任何内容或任何错误,请评论hehe有点急于回答
答案 1 :(得分:1)
只需将您的NewPost
操作移至您的AdminController
:
public class AdminController : Controller
{
public ActionResult Dashboard()
{
return View();
}
// Here you go
public ActionResult NewPost()
{
return View();
}
}
如果您希望Dashboard
和NewPost
视图都位于Admin
文件夹