2012-09-21 2 views
0

안녕하세요, 저는 모델을 작성했는데 Datetime 형식의 속성이 있습니다. 양식을 게시 할 때 날짜 속성 시간의 시간은 23:59 여야합니다. 어떤 방법으로 합리적인 지 알 수 있습니다.asp.net mvc 게시 모델 및 시간 지정

  • 행동 방식에서 사용자 정의 모델 바인더
  • 업데이트 날짜를 만들기 내가 jQuery를에있는 DateTimePicker과 그 형식을 사용하고
  • 는 시간을 포함하지 MM.DD.YY입니다.

    [Authorize, HttpPost] 
    public ActionResult Edit(int? id, OrderFormViewModel formModel) 
    { 
        var model = repository.GetShippingsById(id.Value); 
    
        if (TryUpdateModel(model, "Order")) 
        { 
         model.Date = new DateTime(formModel.Order.Date.Year, formModel.Order.Date.Month, formModel.Order.Date.Day, 23, 59, 59); 
    
         repository.Save(); 
         return RedirectToAction("Details", new { @id = model.Id }); 
        } 
    
        return View(formModel); 
    } 
    
+0

모델의 요구 사항 인 경우 날짜 필드의 설정자에 입력하십시오. –

답변

0

당신은 (그리고 시간이 일정 값) 당신이 얻을 것이다 액틴이 경우에, 그래서, 당신은 ActionFilterAttribute 사용하고, 바인딩 세트 시간의 단계에 수 시간을 추가하려는 경우에만 그 문제의 경우 정확한 날짜 값.

제출하는 맞춤 양식을 사용하는 경우 JS를 통해 값을 업데이트 할 수 있지만이 경우 중요한 경우 현지화시주의해야합니다.

제 생각에는 ActionFilterAttribute가 더 좋은 방법입니다. 내가 두 번째 옵션을 사용합니다

private DateTime _date 
public DateTime Date{ 
    set{ 
    this._date = value; 
    //ADD CODE TO ADD HOURS 
    } 
    get{return _date ;} 
} 
+0

개체가 엔티티 프레임 워크에 있습니다. 가능한 부분 클래스에서 설정할 수 있습니까? – bayramucuncu

+0

부분 클래스에 함수를 추가 할 수 있습니다. 그러면 시간이있는 날짜가 반환됩니다. 그리고 당신은 시간을 가지고 날짜를 얻을 수있는 dateTime 타입에 대한 확장을 만들 수 있습니다. public static Datetime AddHours (this DateTime d) { // 시간 추가 }; –

0

- 행동 갱신 : 같은

하지만이 모델을 업데이트 할 경우, 사용자가 만들 수있는 속성입니다. 이유 :

  • 논리적으로 컨트롤러에 속한다는
  • 는 C#으로 할 훨씬 간단
  • 는 더 간단 쉽게 & 유지하기 위해 (보기 관련보기 이외의 계산이 없을 것)

하지만 평소처럼 질문에 대한 정답은 없습니다. 사용성, 유지 보수성, 이해하기 쉽습니다 ... 나머지는 알고 있습니다 ...

희망이 있습니다.