2011-04-10 3 views
1

CreatedOn 및 CreatedBy를 HttpPost 만들기 작업으로 다시 보내지 않는 만들기 작업이 있습니다.HTTPost에 모델이 채워지지 않음

이들은 사용자가 정의 할 수있는 속성이 아니며 이상적으로는 양식에 전혀 표시하지 않기를 바랍니다. 그렇다면이 속성을 양식 자체에 두지 않고도 모델에 어떻게 추가 할 수 있습니까? 양식에 숨겨진 필드가 있어야합니까?

감사관

public virtual ActionResult Create() 
    { 
     var meeting = new Meeting 
     { 
      CreatedOn = DateTime.Now, 
      CreatedBy = User.Identity.Name, 
      StartDate = DateTime.Now.AddMinutes(5), 
      EndDate = DateTime.Now.AddHours(3) 
     }; 

     ViewBag.Title = "Create Meeting"; 
     return View(meeting); 
    } 



    [HttpPost] 
    public virtual ActionResult Create(Meeting meeting) 
    { 
     if (ModelState.IsValid) 
     { 

      _meetingRepository.InsertOrUpdate(meeting); 
      _meetingRepository.Save(); 
      return RedirectToAction(MVC.Meetings.Details(meeting.MeetingId)); 
     } else { 

      return View(); 
     } 
    } 

답변

2

는이 양식 필드를 숨길 수할까요?

예, 확실히 전달하는 좋은 방법입니다. 사용자가 POST 요청을 위조하여 수정할 수는 있지만 시나리오에서는 괜찮을 수 있기 때문에 이는 안전하지 않습니다.

보안이 필요하면 사용자가이 양식에서 수정할 수 없으므로 데이터 저장소에서 다시 가져 와서 변경하지 않아야합니다.

+0

숨겨진 필드 경로를 사용해 보겠습니다. 숨겨진 텍스트 상자를 사용할 수 없게 만든다면 컨트롤러에 다시 전달되거나 무시 될 것인가? – MrBliz

+2

@ Doozer1979,'disabled' => 전혀 전달되지 않았습니다,'readonly' => 전달되었지만 사용자가 수정할 수 없습니다. 그러나 숨겨진 필드이기 때문에 어떤 '비활성화 된'또는 '읽기 전용'으로도 신경 쓸 필요가 없습니다. –

관련 문제