gpt4 book ai didi

c# - 关于 Controller 如何在 C# 中处理 HTTP 请求的一些说明?

转载 作者:太空狗 更新时间:2023-10-30 01:04:40 24 4
gpt4 key购买 nike

我完全是 C# 的新手,我不是很喜欢 MVC(我来自 Java)

我有以下疑惑:

我有一个名为 Controllers 的 Controller 包\文件夹(我不知道 Visual Studio 中的正确名称),其中包含处理传入 HTTP 请求的 Controller 。

所以在这个文件夹中我有 TestController.cs 类,它是这样的:

namespace MyWebApplication.Controllers
{
public class AndreaController : MyBaseController
{
// Manager che effettua la connessione ed ottiene i dati da visualizzare nella view:
private MaliciousCodeManager manager = new MaliciousCodeManager("DefaultConnection");


//
// GET: /Test/

/* Method that handle the HTTP REQUEST toward /Test/index
*
*/
public ActionResult Index(DataModel.MaliciousCode.SearchMalicious model)
{

Debug.WriteLine("*** FILTRI DI RICERCA ***");
...................................................
...................................................
...................................................
DO SOME STUFF
...................................................
...................................................
...................................................
}
}

所以,在我看来,这个 Controller 处理对 /Test/ 路径的请求

因此 Index() 方法处理对 /Test/index 的请求我认为这对我来说很清楚

现在我的疑问与传递给我的 Index 方法的参数有关:

public ActionResult Index(DataModel.MaliciousCode.SearchMalicious model)

所以这个方法的输入参数是一个DataModel.MaliciousCode.SearchMalicious模型对象。

当我在 Debug模式下执行代码时,在我看来,在调用 Index() 方法来处理 HTTP 请求之前,它创建了一个 SearchMalicious 恶意对象作为参数传递

所以我的疑问是:它是从框架自动创建的吗?还是什么?我错过了什么?

发送安德里亚

最佳答案

在这种情况下,您指定索引期望的类型...创建对象,然后将用户发布值或查询字符串参数简单地映射到它。唯一的要求是该类型定义了一个无参数构造函数,以便框架可以创建它。

在这种情况下,用户无法控制正在创建的类型,只能控制映射到它的值。所以是的,理论上,如果你在构造函数中定义了一个用恶意代码定义的类,你可以那样调用它——但那是开发人员而不是最终用户。

在模型绑定(bind)上你必须小心的是框架不知道应该映射什么值。因此,如果您显示一个具有用户模型类型的页面并允许某人更新他们的电子邮件,理论上他们可以覆盖他们的折扣,假设它在同一个对象上并且他们知道属性名称。

关于c# - 关于 Controller 如何在 C# 中处理 HTTP 请求的一些说明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22360031/

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