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

标签 wcf asp.net-mvc-4

我想用 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/

相关文章:

c# - 如何在 asp.net mvc 4 的服务器上缓存数据?

c# - Ninject.Web.Common 和 Ninject.Mvc 未将 DependencyResolver 设置为使用 NinjectDependencyResolver

c# - MVC Html数据属性渲染区别

c# - 未将凭据传递给 WCF 服务导致 401

Java-调用.net wcf web服务Spring

wcf - TCP/IP 无法建立传出连接

c# - 使用 WCF 在 Silverlight 中共享服务接口(interface)和模型

asp.net-mvc-4 - Umbraco Surface Controller 和 API Controller 的区别

asp.net-mvc - 自动检测所有模型到脚手架

c# - 创建自签名 CA 证书并在 IIS 中安装