2014-12-10 2 views
-1

Я хочу создать одно действие «Создать/Изменить» в контроллере. что-то вроде этогоодно действие «Создать/Изменить»

public ActionResult Edit(Guid id, EditModel model = null) 
{ 
    if (ModelState.IsValid) 
    { 
     //save to DB end redirect 
    } 
    if (model == null) 
    { 
     //if model is empty fill from DB 
    } 
    return View(model); 
} 

Если я не отправлять данные по почте, я ожидаю, что модель будет нулевым

Я ожидаю, что поведение, как этот

localhost/controller/edit/guid -> id = guid , model = null 
    localhost/controller/edit/guid + post data -> id = guid , model = fill from post data 

Как я могу это сделать? Или есть другой способ сделать только одно действие «создать/изменить»?

+0

Я отредактировал ваше название. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

0

Как правило, в соответствии с Конвенцией вы используете одно действие для загрузки формы и одно (обозначенное атрибутом HttpPost) для обработки представления формы. Если вы сделаете параметр нулевым, вы можете использовать одно и то же действие для создания записи и редактирования существующего. Например:

public ActionResult Edit(Guid? id) 
{ 
    var model = new EditModel(); 
    if(id != null) 
    { 
     // get the existing record and populate model 
    } 

    return View(model); 
} 

[HttpPost] 
public ActionResult Edit(EditModel model) 
{ 
    if(ModelState.isValid) 
    { 
     // do something with the model 
     // Then redirect to the list (table, whatever), 
     // assuming everything works 
     return RedirectToAction("index", "whatever"); 
    } 

    return View(model); 
} 
Смежные вопросы