2011-10-20 5 views
0

내 세부보기에서 이것을 가지고 있습니다 : UI Snapshot양식 요소 업데이트

이 세부 사항은 이전 페이지에서 왔습니다. 이제 변경된 요소를 다시 DB에 저장하려고합니다. 어떻게해야합니까? 내 홈 컨트롤러 클래스에이 있습니다 :

[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"); 
    } 

그러나 이것은 내 모델 클래스에 있습니다. 어떻게 연결합니까?

+0

수정 후 ID는 존재하지 않습니다 – Birey

+0

나는 ID를 매개 변수로 전달하지 않기 때문에 알고 있습니다. 그럼 첫 번째 줄을 제거해야합니까? –

+1

업데이트를 위해, 당신은이 모델이 있다고 가정하면이 첫번째 줄 (예 : c => c.Id == model.Id) 이 필요할 수 있습니다. – Birey

답변

1

작업에 HttpPost 특성을 사용하십시오. 보기의 모든 입력 필드는 양식 내에 있어야하며, 그렇지 않으면 데이터가 조치에 전송되지 않습니다. 설정을 마치면보기에서 사용중인 것과 동일한 모델을 사용하여 직원의 데이터를 작업에 보낼 수 있습니다. exemple의 경우 :

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

경우에만 이드 보낼 경우

는 당신은 사이클 FormCollection해야하고 FormCollection에 받고있는 값으로 "GetEmployee라는"엔티티의 속성을 설정합니다. 이처럼

:

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

등등. 분명히 Name과 Address는 Employees 객체의 속성 이름입니다.

EntityFramework를 사용하고 있습니까? 그렇다면 "storeDB"의 SaveChanges() 메소드를 호출하십시오. 그렇지 않은 경우 사용중인 데이터 액세스의 save 메소드를 호출해야합니다. 희망이 도움이됩니다.

+0

감사합니다. Gabo. 나는 내 질문을 편집 해 봤어. 예! EF 4.1을 사용 중입니다. –

+0

새 항목을 업데이트하거나 추가 하시겠습니까? 난 행을 업데이 트하려는 이해, 그래서 "storeDB.Employees.Add (모델);" 필요가 없습니다. 이렇게하면 참조 무결성으로 인해 중복 된 행을 삽입 할 수 없다는 내용의 중복 행 또는 예외가 발생할 수 있습니다. 그냥 "storeDB.Employees.Add (모델);" 새 행을 추가하려는 경우에만 –

+0

네가 맞습니다. 나는 그것을 부추 기고 싶다. 다른 중복 행을 추가하지 않는다. –

1

ActionHttpPost으로 설정 한 다음 양식 내용을 게시하고 양식 데이터를 기반으로 개체를 작성한 다음 저장해야합니다. 매개 변수 모델이나 FormCollection

당신이 그것을 채워 값 만 모델을 통과하는 경우는, 모델 매개 변수가 더 좋을 것 중 하나와 동작 방법에

1

사용 HttpPost를.

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

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

Employee에 대해 별도의 ViewModel을 사용하는 것이 좋습니다.

+0

내 편집 된 질문보기 –

+1

storeDB.Employees.Add (model); storeDB.SaveChanges(); – Birey