【发布时间】:2016-08-22 22:06:02
【问题描述】:
我是 ASP.NET MVC 的新手,我很困惑在像 C# 这样的编译语言中,类名在项目构建后如何具有任何意义。有人可以向我解释一下构建过程是如何进行的
public class SomePageController : Controller {
public ActionResult Index() { return View(); }
}
并获取名称SomePage 和Index 以创建调用函数Index() 的URL 映射SomePage/Index?我只有在有一些其他 C# 文件能够以某种方式查看从 Controller 类派生的所有类并获得一个不带后缀 "Controller" 的名称的字符串时才能理解它是如何工作的。但这对来自 C++ 背景的我来说似乎很奇怪,因为我从未见过一种语言可以使用引用自己名称的变量的方式,也从未见过一种遍历从某个类派生的所有类的方法。
也许有人可以告诉我如何编写一个像这样的 C# 程序
public class SomePageController : Controller {
public ActionResult Index() { return View(); }
}
public class SomeOtherPageController : Controller {
public ActionResult Index() { return View(); }
}
public void printPageNames ( void )
{
// ... Will print "SomePage, SomeOtherPage" to the console
}
【问题讨论】:
-
映射到页面与 URL 的关系不大。 URL 映射到控制器上的操作方法,通过基于约定的路由或属性路由。然后通过操作方法选择视图。要查看框架查找视图的位置,只需删除视图并点击 Action Method。系统会方便地向您显示它寻找视图的地点列表。
-
TBH 它比任何编程魔术都更符合惯例——就像@mason 说的那样。当你有像 /client/view 这样的 URL 并且约定没有被覆盖时,应用程序会在 Views/Client/View.cshtml 中查找视图文件(因为它应该对应于 Views/Controller/Action.cshtml)。
标签: c# asp.net asp.net-mvc