gpt4 book ai didi

wcf - 如何在一处声明 MVC 模型和 WCF DataContract?

转载 作者:行者123 更新时间:2023-12-02 21:49:55 30 4
gpt4 key购买 nike

我想用 knockout.js 和 MVC 4 创建一个单页网站。

进行一些更改后,用户将单击针对 Controller Save 操作的保存按钮。
Controller 端我想验证输入数据。
如果数据有效 - 我需要调用 WCF 方法。
如果数据无效 - 我会向客户端返回一些内容并告诉他们“名字太长”之类的内容。

制作这样的东西很简单:

  • 使用 DataAnnotations 声明 SiteModel
  • 声明 Controller 操作public JsonResult Save(SiteModel data)
  • 如果模型有效则创建 WCF DataContract 的新实例并调用 WCF 方法

代码:

public JsonResult Save(SiteModel data)
{
if (ModelState.IsValid)
{
var ui = WcfUserInfo{FirstName = data.FirstName};
if(wcfclient.wcfmethod(ui))
return Json("IsValid");
}
return Json("IsNotValid");
}

是否可以使用 DataAnnotations 创建 DataContract 并在 Save 方法中使用此 DataContract,类似于 public JsonResult Save(WcfDataContract data)

我只是不想创建和支持两个具有相同数据的不同类:一个 MVC 模型和一个 WCF DataContract。

谢谢。

更新:
这 2 个帖子解决了我的问题。
Send objects with custom attributes via a wcf service
How to make WCF client use the same data types as the WCF service

最佳答案

我知道这不是您想听到的,但我再怎么强调也不为过:您与服务的数据契约和您的 View 模型(您的 JSON 表示)不应该相同。它们是不同的问题,尽管现在感觉不像那样。

鉴于此,是什么阻止您简单地将 SiteModel 替换为 WcfUserInfo(如果它们相同(即具有相同的属性))?

附言。如果您使用 AutoMapper,则不必自己进行映射,AutoMapper 将通过两行代码为您处理:一行用于配置 map ,另一行用于执行映射。

关于wcf - 如何在一处声明 MVC 模型和 WCF DataContract?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18855085/

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