Добавление кнопки комментариев к списку службы wcf

#c# #wcf #asp.net-mvc-4 #asp.net-mvc-controller

#c# #wcf #asp.net-mvc-4 #asp.net-mvc-controller

Вопрос:

Я вызвал список телефонных записей в службе 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);

        }

    }
  

Как я могу добавлять комментарии к каждой записи.

Комментарии:

1. Где вы хотите добавлять комментарии, в пользовательском интерфейсе или в контракте Wcf? Не могли бы вы внести немного ясности в свою проблему?

2. В пользовательском интерфейсе, но комментарии должны содержать конкретные идентификаторы входа

Ответ №1:

Если вы хотите объединить два разных контракта данных WCF для удобства пользовательского интерфейса / отображения, вы можете создать модель представления в своем проекте MVC, состоящую из этих двух контрактов данных. И как только вы получите контракты WCF в свое приложение MVC, затем вставьте datamapper (возможно, с помощью Automapper или mapper по вашему выбору) между WCF и вашей ViewModel и измените процесс, одновременно отправляя данные из пользовательского интерфейса обратно в службу WCF.

Обновление на основе ваших комментариев:

Пожалуйста, взгляните на AutoMapper, это инструмент сопоставления для копирования ваших данных свойств из одного типа объектов в другой тип на основе определенной вами стратегии сопоставления.

Если вам нужно поддерживать комментарии / отзывы у текущего вошедшего в систему пользователя, вы можете отслеживать это на сервере, и вам нужно только получать новые комментарии от пользовательского интерфейса к контроллеру и соответствующим образом подготавливать модель для сохранения.

Если вам нужно поддерживать комментарии / отзывы на уровне соответствующего пользователя (зарегистрированного пользователя, который предоставляет комментарии / отзывы к вашему контенту), вы можете сохранить скрытое поле для просмотра, а затем вы должны отправить идентификатор пользователя и комментарии обратно в контроллер и сохранить их.

Комментарии:

1. Пожалуйста, помогите мне немного больше. если я использую autommaper. Я автоматически сопоставлю свой идентификатор комментариев с идентификатором входа. и когда мы когда-нибудь добавим комментарий, он будет сохранен с определенным идентификатором входа, я прав?