0

我在 wcf 服务中调用了电话记录列表。现在我需要为所有记录添加评论和反馈,这样用户可以点击注释按钮,然后输入评论和反馈,而不是特定的记录。

这是我的笔记课

           public class CallNote
     {
    public int Id { get; set; }
    ///<Summary>
    /// 
    ///</Summary>
    public string Comments { get; set; }
    ///<Summary>
    /// 
    ///</Summary>
    ///
    public string FeedBack { get; set; }
    ///<Summary>
    /// 
    ///</Summary>
    ///
    public string Login { get; set; }
    }

通话记录类

    public class CallHistory
   {
    /// <summary>
    /// 
    /// </summary>
    /// 
    public int CallId { get; set; }
    /// <summary>
    /// 
    /// </summary>
    ///
    public string Login { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string FirstName { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string LastName { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string Email { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string Country { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string Phone { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string DialedNumber { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string CallStart { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string CallEnd { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string TariffDescription { get; set; }
    /// <summary>
    /// 
    /// </summary>

    }

这是我的控制器

    public ActionResult CreateNote()
    {
        var result = Manager.GetUsersWhoHaveConsumedFreeCredit();
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        var callHistory = serializer.Deserialize<List<CallHistory>>(result);
        return View(callHistory.ToPagedList(1, Settings.PagingSize));

    }
    [HttpPost]
    public ActionResult CreateNote(CallNote callnote)
    {
        CallNote_Db db = new CallNote_Db();

            if (ModelState.IsValid)
            {
                db.callnote.Add(callnote);
                db.SaveChanges();
                return RedirectToAction("CallHistory");
            }
            return PartialView("CallHistory", callnote);          
    }

    public ActionResult UsersWhoHaveConsumedFreeCredit(int Id = 1)
    {
        var result = Manager.GetUsersWhoHaveConsumedFreeCredit(); ;
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        var callHistory = serializer.Deserialize<List<CallHistory>>(result);
        CallNote callNote = new Models.CallNote();

        CallHistoryFilter callHistoryFilter = new Models.CallHistoryFilter();
        MyYelloAdminEntities db = new Models.MyYelloAdminEntities();
        {
            callHistoryFilter.Countries = db.Countries.ToList();
            callHistoryFilter.Countries.Insert(0, new Country { Title = "All", Prefix = "-1" });
            var model = new UsersWhoHaveConsumedFreeCredit
         {


             CallHistory = callHistory.ToPagedList(Id, Settings.PagingSize),
             CallHistoryFilter = callHistoryFilter

         };
            return View(model);

        }

    }

我如何为每条记录添加评论。

4

1 回答 1

0

如果您想组合两个不同的 WCF 数据协定以方便您的 UI/显示,那么您可以在 MVC 项目中创建一个由这两个数据协定组成的视图模型。一旦您将 WCF 合同获取到您的 MVC 应用程序,然后在 WCF 到您的 ViewModel 之间创建一个数据映射器(可能通过使用 Automapper 或您选择的映射器),并在将数据从 UI 推回 WCF 服务时反转该过程。

根据您的评论更新:

请看一下 AutoMapper,它是一个映射工具,可以根据您定义的映射策略将您的属性数据从一种类型的实体复制到另一种类型。

如果您需要维护当前登录用户的评论/反馈,您可以在服务器上跟踪它,您只需将新评论从 UI 获取到控制器并准备模型以相应地保存。

如果您需要在各个用户(针对您的内容提供评论/反馈的注册用户)级别维护评论/反馈,那么您可以在视图中维护一个隐藏字段,然后您应该将用户 ID 和评论发布回控制器并保存它们。

于 2014-06-25T10:34:48.603 回答