#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. Я автоматически сопоставлю свой идентификатор комментариев с идентификатором входа. и когда мы когда-нибудь добавим комментарий, он будет сохранен с определенным идентификатором входа, я прав?