0

Будучи новым для MVC, я пытаюсь изменить уже существующие приложения со следующей структурой:Asp.net ViewModel и контроллер MVC наследование

public ActionResult Create() 
    { 
     return Edit(new Book()); 
    } 

Метод Edit использует EditView ViewModel. Мне нужно было ссылаться на идентификатор, поэтому я добавил идентификатор в ViewModel, который отлично подходит для редактирования книг, но генерирует исключение при создании книг, поскольку, конечно, для модели в данный момент не существует id.

Что я сделал это: Скопировать свойства из EditView в CreateView ViewModel, и просто мой EditView продлить CreateView как:

public class EditView : CreateView 
{ 
    public Guid Id { get; set; } 
} 

я затем заменить ссылку на метод редактирования выше с

return Create(new Book()); 

и код создать метод в соответствии с методом редактирования, но без ссылки на свойства идентификатора, который работает, но выглядит некрасиво из-за большого количества дублированного кода - теперь я долго редактировать и создавать методы в мой контроллер, который почти идентичны бару id pr operty:

частный ActionResult Edit (Book книга) { ....

 return View("Edit", new EditView 
     { 
      Id = book.Id, 
      (rest of the object initializer code identical to the Create method) 

Это только, кажется, не нравится, как идти - я мог случайно получить направление в качестве примера на это пожалуйста?

ответ

0

Что я делаю, чтобы обойти это, иметь частичный вид с общими полями создания/редактирования. Я вставляю это частичное в свои представления для создания и редактирования. В окне редактирования есть дополнительное поле id. В вашем контроллере вы можете сделать то же самое; вывести общий код в новый метод и вызвать этот метод из ваших действий по созданию и редактированию. Пример here

Смежные вопросы