2012-05-08 2 views
2

각 항목에 Date 속성이 포함 된보기가 있습니다.ASP.NET MVC 숨겨진 입력 요소에 의해 밀리 초가 잘린다

<%:Html.HiddenFor(m => m.Items[j].Date)%> 

다른 속성의 수를 숨기거나 표시하고, 사용자가 데이터베이스에 이러한 의견을 모든 항목에 대한 설명을 입력하고 저장 할 수 있습니다. '일괄 수정'유형의보기입니다.

나는 좋은 효과에 전에 이러한 뷰를 사용했지만,이 때문에

<input name="Items[3].Date" type="hidden" value="3/05/2012 11:56:48 AM" /> 

문제 렌더링 때문에 나는 일환으로 날짜 시간을 사용할 필요가있다 나는 날짜 속성에 문제가있어 이 데이터 항목에 대한 기본 키의 일치를 허용하기 위해 데이터베이스의 밀리 초를자를 수 있지만 초당 하나의 데이터 포인트 만 있다는 보장은 없습니다.

DateTime의 숨겨진 입력 필드에 밀리 초 구성 요소를 포함하여 모든 속성 정보가 유지되도록하려면 어떻게해야합니까?

답변

2

아니라 당신이 정말로 왜 그냥

<input type="hidden" name="Items[<%:j%>].Date" value="<%:model.Items[j].Date.ToString("dd/MM/yy/ HH:mm:ss.fffff")%>"/> 
+0

내 코드를 편집했습니다. –

0

사용에게 모델의 날짜 속성에 DisplayFormat 속성 및 포맷 문자열에서 밀리 초 철자 :

[DisplayFormat(DataFormatString = "{0:yyyyMMddhhmmssfff}")] 
+0

ㅎ 간단하게

<%:Html.HiddenFor(m => m.Items[j].Date)%> 

를 사용해야합니까, 그냥 지적 거라고 - 나를 때려. 비슷한 질문 : http://stackoverflow.com/questions/9724713/html-hiddenfor-formats-datetime-incorrectly-in-asp-net –

+0

이것은 나를 위해 작동하지 않습니다. 연결된 질문에 따르면이 속성은 표시 필드에는 적용되지만 숨김 필드에는 적용되지 않습니다. –

1

난에서 날짜 시간의 형식을 강제 어떤 성공을 거두었 적이 없다를 HiddenFor 필드.

DisplayFormat 속성은 DisplayFor 필드의 형식을 강제 할 수 있지만 HiddenFor 필드에는 영향을 미치지 않습니다.

나는 진정한 시간을 유지하기 위해 tick 속성을 serialize하고 deserialize하기 위해 이것을 해킹 할 필요가 없다.

public long DateTicks 
{ 
    get 
    { 
     return this.Date.HasValue ? this.Date.Value.Ticks : 0; 
    } 
    set 
    { 
     if (value == 0) 
      this.Date = null; 
     else 
      this.Date = new DateTime(value); 
    } 
} 
1

사용

<%:Html.HiddenFor(m => m.Items[j].Date.Ticks)%> 
관련 문제