Я использую ASP.NET 4, MVC3, EF 4.3 (сначала код) и нокаут JS.В настоящее время я работаю над созданием и редактированием форм для одной из моих более сложных моделей.К нему прикреплены различные поля, а также несколько коллекций для связанных объектов (многие ко многим).Я задам свой вопрос для сценария редактирования, поскольку он сложнее двух.
Я бы хотел, чтобы пользователь мог редактировать все поля модели, которые я поместил вViewModel.Для отображения и добавления дополнительных умений (одной из коллекций «многие ко многим») я решил с большим эффектом использовать knockoutjs, который прекрасно отображает сериализованные начальные объекты коллекции, а также позволяет добавлять больше.
Моя проблема в том, как сохранить эту довольно сложную модель, отправив ее обратно в контроллер.Поскольку многие из моих полей могут быть представлены в виде стандартными помощниками HTML, я бы хотел избежать нескольких записей AJAX или привязки каждого отдельного поля к ko.observable (массиву).Что я действительно хочу, так это взять только коллекции «многие ко многим», связать их с ko.observablearrays и каким-то образом отправить их обратно как часть стандартного строго типизированного сообщения формы представления mvc.
Возможно ли это вообще??И если так, как бы я подошел к этому?Буду очень признателен за любую помощь, мои исследования пока не дали никаких полезных результатов.Готов опубликовать фрагменты кода, если это поможет лучше описать проблему.
edit: образец viewmodel для формы редактирования по запросу
namespace MyProject.Models
{
[NotMapped]
public class JobViewModel
{
public int JobID { get; set; }
[Required]
public string Title { get; set; }
[Required]
public string Description { get; set; }
[Display(Name = "Start Date")]
[DataType(DataType.Date)]
public DateTime StartDate { get; set; }
[Display(Name = "End Date")]
[DataType(DataType.Date)]
public DateTime EndDate { get; set; }
// Foreign Keys
[Display(Name = "Hiring Manager")]
[Required]
public string HiringManagerID { get; set; }
[Display(Name = "Assigned User")]
public string AssignedUserID { get; set; }
//Collections for many-to-many properties
public List<JobSkillViewModel> JobSkills { get; set; }
}
}
и моя ViewModel, хранящаяся в коллекции:
namespace MyProjectModels
{
[NotMapped]
public class JobSkillViewModel
{
public int SkillID { get; set; }
public int LevelID { get; set; }
public string SkillName { get; set; }
public string LevelDescription { get; set; }
}
}