gpt4 book ai didi

c# - 请求 URL "HelloWorld"如何在 ASP.Net MVC 中实例化 HelloWorldController 对象?

转载 作者:行者123 更新时间:2023-11-30 14:53:11 25 4
gpt4 key购买 nike

我正在寻找 this documentation很困惑。

创建文件后

using System.Web;
using System.Web.Mvc;

namespace MvcMovie.Controllers
{
public class HelloWorldController : Controller
{
//
// GET: /HelloWorld/

public string Index()
{
return "This is my <b>default</b> action...";
}

//
// GET: /HelloWorld/Welcome/

public string Welcome()
{
return "This is the Welcome action method...";
}
}
}

在我的 ASP.NET MVC 项目的 Controllers 文件夹中,我可以向我网站的子页面 HelloWorld 发出 URL 请求,显然是 HelloWorldController 的一个实例创建对象并调用其方法 Index()。这到底是怎么发生的对我来说是个谜。该文档有 1 个简单的句子

The first part of the URL determines the controller class to execute. So /HelloWorld maps to the HelloWorldController class.

但我不明白这是怎么发生的。 MVC 源文件中必须有其他地方接受子页面的 URL 请求并将其附加“Controller”,并查找从 Controller 类派生的具有相同名称的类。魔法在哪里发生?此外,这如何转化为运行时,因为在运行时源代码中类的名称已消失/不相关?还是我对一切都一头雾水?

最佳答案

将来自路由系统的请求映射到 Controller DefaultControllerFactory的责任类。

DefaultControllerFactory 遵循 convention-over-configuration pattern .工厂寻找满足以下条件的 Controller -

  • 类(class)必须是公开的
  • 类必须是具体的
  • 类不能带泛型参数
  • 类名必须以Controller结尾
  • 该类必须实现 IController 接口(interface)

如果你想将 HelloWorld 请求映射到 HelloWorldJonDoe Controller ,你可以通过覆盖 DefaultControllerFactory 创建 ControllerFactory

关于c# - 请求 URL "HelloWorld"如何在 ASP.Net MVC 中实例化 HelloWorldController 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30083893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com