【问题标题】:Domain Model classes split into a seperate assembly域模型类拆分为单独的程序集
【发布时间】:2020-04-20 21:19:32
【问题描述】:

我正在使用 webAPI2 创建一个 webAPI。
我创建了一些域模型类,它们是 webAPI 项目中模型文件夹的一部分。
这是 DataRequest 模型类

public class DataRequest 
{
    Field1
    Field2...
}

Controller类和Action方法如下。

  [RoutePrefix("api/Data")]
  public class DataController : ApiController
  {
      [Route("")]
      [HttpPost]
     public IHttpActionResult Post(DataRequest request)
     {
     }
  }

以及在json中postman发出的数据请求体

{
   Field1:"Some Value",
   Field2: "Some Value"
}

模型绑定完美运行,我在字段 1 和字段 2 的 POST 操作方法中获取值。
我有一个带有辅助方法的单独项目,我想通过使用 Data Request 类添加一些业务逻辑来扩展这个项目。因此,我创建了一个带有模型的单独项目,并将该项目添加为对帮助程序和 api 项目的引用。
使用此设置成功编译项目。但是当我在 Postman 中发出请求时,会调用 Action 方法,但请求参数中的所有字段都为 null。
谷歌搜索向我指出了一些链接,这些链接解释了从单独的程序集中加载控制器类,但没有提到从单独的程序集中加载模型。

这是否允许,如果允许,谁能告诉我如何让它工作。

【问题讨论】:

    标签: asp.net model asp.net-web-api2


    【解决方案1】:

    最后,我解决了这个问题。 我有 DataRequest 类的 [Serializable] 属性,DataRequest 类的 Field2 被定义为 List 的类型。 在通过 this 堆栈溢出响应后,我从 DataRequest 类中删除了 [Serializable] 属性,这给了我一个错误,即无法将类型 List 强制转换为 System.Array。
    在此之后,我将 Field2 类型从 list 更改为 Array 并且它起作用了。
    最初,当我在 API 项目本身中定义模型时,当 Field2 被声明为 Array 类型时,我收到一个错误。这让我忽略了 Field2 类型的差异,但最终证明是罪魁祸首。

    【讨论】:

      猜你喜欢
      • 2021-12-05
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-17
      • 2011-07-19
      • 1970-01-01
      相关资源
      最近更新 更多