Обновление элементов формы - PullRequest
0 голосов
/ 20 октября 2011

У меня есть это в моем представлении сведений: Снимок пользовательского интерфейса

Эти сведения получены на предыдущей странице.Теперь я хочу сохранить измененные элементы обратно в БД.Как я могу это сделать?У меня есть это на моем Классе Контроллера дома:

   [HttpPost]
    public ActionResult UpdateItem (Employee model)
    {
        var getEmployee = storeDB.Employees.SingleOrDefault( c=>c.Id == model.Id);
        getEmployee.Name = model.Name.ToString();
        getEmployee.Address = model.Address.ToString();
        storeDB.Employees.Add(model);
        storeDB.SaveChanges();
        return RedirectToAction("Index");
    }

Но это в моем Модельном классе.Как мне связаться?

Ответы [ 3 ]

1 голос
/ 20 октября 2011

Использовать HttpPost для метода Action с параметром либо модель, либо FormCollection

Если вы передаете только модель с заполненными значениями, параметр модели будет лучше.

[HttpPost]
public ActionResult UpdateItem (Employee model){
//   save model here

return RedirectToAction("Index", "Home"); //something like this
}

Было бы лучше использовать отдельную ViewModel для Сотрудника.

1 голос
/ 20 октября 2011

Используйте атрибут HttpPost в вашем действии.Все поля ввода в вашем представлении должны быть внутри формы, иначе данные не будут отправлены действию.После того, как вы это настроите, вы можете использовать ту же модель, которую вы используете в своем представлении, чтобы отправить данные вашего сотрудника в ваше действие.Например:

[HttpPost]
public ActionResult UpdateItem (Employee model)
{
    ....
    getEmployee.Name = model.EmployeeName.ToString();
    getEmployee.Address = model.EmployeeAddress.ToString();
    ...
} 

Если вы отправляете только Id, вам нужно будет выполнить цикл FormCollection и установить для свойств объекта «getEmployee» значения, которые вы получаете в FormCollection.Вот так:

getEmployee.Name = FormCollection["EmployeeName"].ToString();
getEmployee.Address = FormCollection["EmployeeAddress"].ToString();
...

И так далее.Очевидно, что Name и Address - это имена свойств вашего объекта Employees.

Используете ли вы EntityFramework?Если это так, просто вызовите метод SaveChanges () для storeDB.Если нет, вам нужно вызвать метод сохранения доступа к данным, который вы используете.Надеюсь, это поможет.

1 голос
/ 20 октября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...