2016-10-15 2 views
0

질문을 표현하는 방법을 잘 모릅니다. hiddenFor 필드를 사용하여 html.display에 날짜를 표시하거나 편집하지 않고 해당 필드와 비슷한 날짜에 database에 record_time을 저장하려고합니다. 보기에 데이터를 올바르게 표시하고 HiddenFor 및 DisplayFor를 사용하여 데이터를 저장하십시오.

액션

public ActionResult Create() 
    {    
     Record newRecord = new Record(); 
     newRecord.user_id = 1; //let it be 1 for simplicity 
     newRecord.record_time = System.DateTime.Now; 
     return View(newRecord); 
    } 

CREATE보기 USER_ID 정보

<div class="form-group"> 
     @Html.LabelFor(model => model.user_id, "User name", htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.HiddenFor(model => model.user_id) 
     </div> 
    </div> 
    <div class="form-group"> 
     @Html.LabelFor(model => model.record_time, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.HiddenFor(model => model.record_time) 

      //this line I'm concerned about 
      @Html.DisplayFor(model => model.record_time, new { htmlAttributes = new { @class = "form-control" } })    
     </div> 
    </div> 

질문

1)를 작성. editFor가 아닌 새 레코드에 대해 hiddenFor를 사용하는 것이 맞습니까?

2) record_time에 관하여. hiddenFor 및 displayFor를 모두 사용하는 것이 맞습니까? 어느 것이 데이터를 다시 데이터베이스로 보내는 데 사용됩니까? 미리 정의 된 datetime 정보를 표시하고 데이터베이스에 보내려면 올바른 방법은 무엇입니까?

+1

양식 컨트롤 만 값을 게시합니다 ('DisplayFor()'는 양식 컨트롤을 만들지 않습니다). 그러나 당신은'record_time'을위한 폼 컨트롤을 가지고 있으면 안됩니다 - 여러분은 데이터를 저장하기 전에 컨트롤러에 설정 만하면됩니다. 'user_id'에 관해서 - 편집하고 싶지 않다면 숨겨진 입력이되어야합니다. –

+0

@StephenMuecke, 고마워요. HttpPost 액션에서 그것을 저장하는 훌륭한 조언. 나는 그것을 적절히 수정했으며 지금은 완벽합니다. – SWA

답변

1

폼은 폼 컨트롤 (input, select, textarea)의 이름/값 쌍만 제출하고 DisplayFor()은 폼 컨트롤을 생성하지 않습니다.

당신이 DisplayFor()를 사용하여 날짜를 포맷 할 경우에, 당신은 예를

[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")] 
public DateTime record_time { get; set; } 

를 들어, DisplayFormatAttribute를 사용하거나 그냥 DisplayFor()가 요소 텍스트 만,하지를 렌더링하는 <div>@Model.record_time.ToString("MM/dd/yyyy")</div>

주를 사용할 수 있습니다 , 그리고 그것은 htmlAttributes을 받아들이는 오버로드를 가지지 않습니다 (속성을 적용 할 요소가 없기 때문에 그 속성을 적용 할 요소가 없습니다.)

@Html.DisplayFor(m => m.record_time) 

부수적으로 두 등록 정보의 이름은 레코드를 작성/편집 한 사용자 및 레코드 작성 날짜를 나타냅니다. 이 경우 해당 값에 대한 입력을 포함해서는 안됩니다. 데이터 모델을 저장하기 직전에 POST 메서드에서 둘 다 설정해야합니다. 생성보기가 record_time 인 경우 (레코드가 작성된 날짜라고 가정) 아무 의미가 없습니다 (아직 작성되지 않았습니다).

+0

나는 그것에 동의한다. 나는 수정을했고,보기에서 날짜를 제거하고 HttpPost 액션에서만 할당했다. 또한 날짜 형식 지정 옵션에 대해 감사 드리며 두 번째 것은 생성 된 클래스에서 뷰 모델로 이동할 때까지 사용할 수있는 클래스입니다. 데이터베이스 클래스를 업데이트하면 수정 내용이 지워지기 때문입니다. – SWA

관련 문제