C# 模型类可以放在控制器类中吗

C# 模型类可以放在控制器类中吗,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,如果在别处得到答复,则表示歉意;唯一的搜索结果是基于PHP的答案 TL;DR-ASP.NETAPI/MVC模型类是否可以在控制器类中声明,执行此操作时是否存在任何问题 我有许多接受多个参数的控制器。基于和,普遍的共识似乎是复杂类型参数是最好的,例如 public class MyController : ApiController { [HttpPost] public HttpResponseMessage Post([FromBody] MyModel ModelParam

如果在别处得到答复,则表示歉意;唯一的搜索结果是基于PHP的答案

TL;DR-ASP.NETAPI/MVC模型类是否可以在控制器类中声明,执行此操作时是否存在任何问题

我有许多接受多个参数的控制器。基于和,普遍的共识似乎是复杂类型参数是最好的,例如

public class MyController : ApiController 
{
    [HttpPost]
    public HttpResponseMessage Post([FromBody] MyModel ModelParam)
    {
       // do something with ModelParam.Param1, ModelParam.Param2, etc...
    }
}
我总是将类放在应用程序的
Models
文件夹中,但我发现每个控制器只使用一次我的模型,因此我最终得到的模型数量与控制器数量相同

也许我在这里做了一些错误的事情,但是每个模型是否都存在于控制器中,这样相关的逻辑就在一起了?例如

public class MyController : ApiController 
{
    public class MyModel
    {
        public string Param1{ get; set; }
        public DateTime Param2{ get; set; }
    }

    [HttpPost]
    public HttpResponseMessage Post([FromBody] MyModel ModelParam)
    {
       // do something with ModelParam.Param1, ModelParam.Param2, etc...
    }
}

我试过了,它似乎可以编译和运行。以前在使用webforms时,我因为将类放入页面而受到了严重的伤害(类似于“无法将类型“MyClass”转换为类型“MyClass”的间歇性错误)。我很担心这种方法是否存在任何问题(或者这是一种不好的做法)?

你可以,但它没有用。看看Eric的答案:当然可以……但为什么不停在这里呢?你还可以包括视图、web框架的引导、其他控制器。见鬼,为什么不把整个应用程序放在一个文件中呢?你不必遵循惯例,尽管你可能会发现这更容易处理,但请放心,不要这样做她的没有。C#约定是一个类只有一个文件。保持源文件的小使它们更易于使用。开发环境使其易于导航。我想你可以使用区域。或者你可以在模型文件夹中创建特定于控制器的文件夹,以便于维护。这对我来说已经足够好了-谢谢:-)