2012-12-06 1 views
0

기본적으로 저는 ViewState라는 ASP.NET에서 우리가 가진 것을 이야기하고 있습니다.데이터베이스에 저장하기 전에 MVC3에서 만들기/편집을 수행 할 때 모델을 유지하는 방법은 무엇입니까?

public class Employee 
{ 
    public string EmployeeId { get; set; } 
    public string Name { get; set; } 
    public string Company { get; set; } 
    public string Phone { get; set; } 
    public string Address { get; set; } 
} 

우리 회사가 직원 ID, 이름 및 회사와 직원에 대한 레코드를 생성 : 여기, 내가 모델 직원을, 간단하게하는 예입니다. 직원은 자신의 전화 번호와 주소 만 입력 (업데이트)해야합니다. 직원이이 정보를 입력하도록 편집/작성 모드에서 양식을 제시하면 EmployeeID, Name 및 Company는 텍스트로만 출력되고 Phone and Address는 편집 가능한 필드 (Html.EditorFor)로 입력하면 값을 유지할 수 있습니다. 모델 개체.

이 양식을 HTTP로 게시 할 때 유효성 검사가 실패하고 입력 내용을 수정하기 위해 사용자에게 양식이 다시 표시됩니다 (보기 (모델)).

그러나 EmployeeID, Name 및 Company 값은 Phone 및 Address와 같은 Html.EditorFor로 정의되지 않았기 때문에 손실되며 따라서 제출 된 모델이 다시 View로 전달 될 때 보존되지 않습니다.

(편집 할 수없는) 해당 등록 정보를 모델에 보존 (유지)하는 방법은 무엇입니까?

감사합니다.

답변

1

단순히 Html.HiddenFor를 사용하고 페이지에 값을 저장하십시오. 당신은 또한 mvc future 프로젝트와 Html.Serialize를 사용할 수 있지만 필요하지 않을 때는 viewstate를 모방합니다.

+0

Html.HiddenFor를 사용하는 것이 저의 첫 번째 선택이었습니다. "올바른"MVC 방식인지 확실하지 않았습니다. 기본적으로 19 개의 필드가 표시에만 사용되고 20 개의 필드가있는 모델이 있고 1 개의 필드 만 편집 가능한 경우 19 개의 Html.HiddenFor 요소를 배치해야합니까? – monstro

+0

그렇습니다.이 경우 클라이언트 측에 많은 필드를 저장하더라도 캐시를 저장하거나 tempdate에 객체를 저장하고 페이지가 저장소 메커니즘 이상으로 사용되기 때문에 다시 게시 할 수 있습니다. TempData는 뒤에서 세션 개체를 사용하므로 현재 사용자에 대한 요청이 중복되는 경우에도 성능 문제가 발생하지 않도록주의하십시오. –

관련 문제