programing

@Html.DisplayFor - 날짜 형식("mm/dd/yyyy")

skycolor 2023. 5. 12. 21:58
반응형

@Html.DisplayFor - 날짜 형식("mm/dd/yyyy")

가 갖고 면도기 과 같습니다.mm/dd/yyyy 형식: 날짜 형식:

Audit Date: @Html.DisplayFor(Model => Model.AuditDate)

여러 가지 접근 방식을 시도해 보았지만 현재 상황에서는 어떤 접근 방식도 제대로 작동하지 않습니다.

감사 는 내감날짜입니다.DateTime?를 치다

다음과 같은 작업을 시도했지만 다음 오류가 발생했습니다.

@Html.DisplayFor(Model => Model.AuditDate.Value.ToShortDateString())

추가 정보:템플릿은 필드 액세스, 속성 액세스, 단일 차원 배열 인덱스 또는 단일 매개 변수 사용자 지정 인덱서 식에만 사용할 수 있습니다.

사용해 본 방법:

@Html.DisplayFor(Model => Model.AuditDate.ToString("mm/dd/yyyy"))

메서드 'ToString'에 대한 오버로드가 하나의 인수를 사용하지 않습니다.

사용하는 경우DisplayFor그런 다음 당신은 다음을 통해 형식을 정의해야 합니다.DisplayFormat속성을 지정하거나 사용자 지정 표시 템플릿을 사용합니다.(사전 설정의 전체 목록)DisplayFormatString는 여기에서 확인할 수 있습니다.)

[DisplayFormat(DataFormatString = "{0:d}")]
public DateTime? AuditDate { get; set; }

뷰를 합니다.Views\Shared\DisplayTemplates\DateTime.cshtml:

@model DateTime?
@if (Model.HasValue)
{
    @Model.Value.ToString("MM/dd/yyyy")
}

은 모든 그은모게다니적됩에 입니다.DateTime입니다.s, 하만지, 시이을인는하것들도코딩간당.하려면 날속성만적면다사음다용니합을려용하에짜다니사▁if를 사용합니다.Views\Shared\DisplayTemplates\Date.cshtml 리고그고.DataType속성:

[DataType(DataType.Date)]
public DateTime? AuditDate { get; set; }

은 마막옵사않것다입니는지용하션은을 사용하지 입니다.DisplayFor속성을 직접 렌더링합니다.

@if (Model.AuditDate.HasValue)
{
    @Model.AuditDate.Value.ToString("MM/dd/yyyy")
}

코드에서 이 변경 사항을 사용하고 있습니다.

이전 코드:

 <td>
  @Html.DisplayFor(modelItem => item.dataakt)
 </td>

새로 만들기:

<td>
 @Convert.ToDateTime(item.dataakt).ToString("dd/MM/yyyy")
</td>

단순히 해당 모델 속성의 값을 출력하는 경우에는 다음이 필요하지 않습니다.DisplayForhtml 도우미, 올바른 문자열 형식으로 직접 호출하십시오.

Audit Date: @Model.AuditDate.Value.ToString("d")

출력해야 합니다.

Audit Date: 1/21/2015

마지막으로 감사 날짜가 null일 수 있으므로 null 가능한 값의 형식을 지정하기 전에 조건부 검사를 수행해야 합니다.

@if (item.AuditDate!= null) { @Model.AuditDate.Value.ToString("d")}

발생한 오류를 구글에 검색하면 HTML 도우미에서 모델이라는 단어를 사용하여 오류가 발생했음을 보여주는 이 답변이 제공됩니다.예를 들어, 사용@Html.DisplayFor(Model=>Model.someProperty)다음 이외의 다른 항목을 사용하도록 변경합니다.Model 예를들어:@Html.DisplayFor(x=>x.someProperty) 합니다.Mm이 도우미들 속에

전체 프로젝트에 이 형식을 적용할 때 뷰 모델에서 [DisplayFormat] 특성을 사용할 수 있습니다.

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public Nullable<System.DateTime> Date { get; set; }

@디스플레이 템플릿 사용에 대한 Chris Pratt의 답변이 잘못되었습니다.작동하기 위한 올바른 코드는 다음과 같습니다.

@model DateTime?

@if (Model.HasValue)
{
    @Convert.ToDateTime(Model).ToString("MM/dd/yyyy")
}

for가 매개 변수를 허용하지 않기 때문입니다.

나에게는 그것은 사용하기에 충분했습니다.

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

저는 다음과 같은 방식으로 비슷한 것을 구현했습니다.

  1. TextBoxFor를 사용하여 날짜를 필수 형식으로 표시하고 필드를 읽기 전용으로 설정합니다.
@Html.TextBoxFor(Model => Model.AuditDate, "{0:dd-MMM-yyyy}", new{@class="my-style", @readonly=true})

CSS의 TextBox에 윤곽선테두리를 0으로 지정합니다.

.my-style {
    outline: none;
    border: none;
}

그리고...다 했습니다 :)

변환을 사용할 수 있습니다.

 <td>@Convert.ToString(string.Format("{0:dd/MM/yyyy}", o.frm_dt))</td> 

뷰에서 바꾸기:

@Html.DisplayFor(Model => Model.AuditDate.Value.ToShortDateString())

포함:

@if(@Model.AuditDate.Value != null){@Model.AuditDate.Value.ToString("dd/MM/yyyy")}
else {@Html.DisplayFor(Model => Model.AuditDate)}

설명:AuditDate 값이 null이 아닌 경우 날짜 형식을 dd/MM/yyyy로 지정하고, 그렇지 않은 경우 값이 없기 때문에 그대로 유지합니다.

땅을 좀 파서 결국엔 그 곳에Thread컨트롤러의 작업 방법에 CultureInfo("en-US")포함하는 의 CurrentCulture 값:

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); 

모든 보기에 이 설정을 적용하려면 다음과 같은 몇 가지 다른 옵션이 있습니다.

에 대하여CurrentCulture속성 값:

이 속성에서 반환되는 CultureInfo 개체와 관련 개체는 날짜, 시간, 숫자, 통화 값, 텍스트 정렬 순서, 케이스 규칙 및 문자열 비교에 대한 기본 형식을 결정합니다.

출처: MSDN Current Culture

참고: 이전 버전CurrentCulture 중인 경우 속성 사항일 수 .CultureInfo("en-US")날짜 형식이 있는 경우 또는 이와 유사합니다."MM/dd/yyyy".

후를 한 후CurrentCulture를 속성, 날를변으로 합니다."M/d/yyyy"보기의 형식:

@{  //code block 
    var shortDateLocalFormat = "";
    if (Model.AuditDate.HasValue) {
       shortDateLocalFormat = ((DateTime)Model.AuditDate).ToString("M/d/yyyy");
       //alternative way below
       //shortDateLocalFormat = ((DateTime)Model.AuditDate).ToString("d");
    }
}

@shortDateLocalFormat

@shortDateLocalFormat은 변의형다같습니다음과로 지정됩니다.ToString("M/d/yyyy")효과가 있습니다. 만약에.ToString("MM/dd/yyyy")내가 처음에 했던 것처럼 사용되었고, 결국 당신은 제로 문제를 주도하게 됩니다.또한 토미가 추천한 것처럼. ToString("d")작동하기도 합니다.은 정로말."d"는 "짧은 날짜 패턴"을 나타내며 다양한 문화/언어 형식으로도 사용할 수 있습니다.

위의 코드 블록도 쿨 헬퍼 방식 등으로 대체할 수 있을 것 같습니다.

예를들면

@helper DateFormatter(object date)
{
    var shortDateLocalFormat = "";
    if (date != null) {     
        shortDateLocalFormat = ((DateTime)date).ToString("M/d/yyyy");
     }

    @shortDateLocalFormat
}

이 도우미 호출과 함께 사용할 수 있습니다.

@DateFormatter(Model.AuditDate)

업데이트, DateTime에서 동일한 작업을 수행할 수 있는 다른 방법이 있다는 것을 알게 되었습니다.문자열로(문자열,IFormatProvider) 메서드가 사용됩니다.이 방법을 사용하면 사용할 필요가 없습니다.ThreadCurrentCulture소유물.CultureInfo("en-US")두 번째 인수로 전달됩니다. --> IFormatProvider toDateTime.ToString(String, IFormatProvider)방법.

수정된 도우미 방법:

@helper DateFormatter(object date)
{
    var shortDateLocalFormat = "";
    if (date != null) {
       shortDateLocalFormat = ((DateTime)date).ToString("d", new System.Globalization.CultureInfo("en-US"));
    }

    @shortDateLocalFormat
}

.NET 피들

간단하게 시도해보세요.

@(Model.AuditDate.HasValue ? Model.AuditDate.ToString("mm/dd/yyyy") : String.Empty)

또한 와 같은 다양한 유형의 문자열 형식을 사용할 수 있습니다.ToString("dd MMM, yyy").To String("d") 등

간단한 날짜 문자열을 가져오는 가장 좋은 방법은 다음과 같습니다.

 @DateTime.Parse(Html.DisplayFor(Model => Model.AuditDate).ToString()).ToShortDateString()

대신에

@Html.DisplayFor(Model => Model.AuditDate)

사용하다

@Model.AuditDate.ToString("MM/dd/yyyy")

이 스타일은 날짜를 다음과 같이 렌더링합니다.06/02/2022.

당신은 당신이 필요로 하는 방법에 따라 당신의 끈을 스타일링 할 수 있습니다.

모델에서 데이터 주석을 설정하기만 하면 됩니다.

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

온 뷰(cshtml 페이지)

@Html.DisplayFor(model => model.AuditDate)

당신이 할 일은 없습니다.유용하기를 바랍니다.

컨트롤러에도 유사한 문제가 있었는데, 다음과 같은 문제가 해결되었습니다.

model.DateSigned.HasValue ? model.DateSigned.Value.ToString("MM/dd/yyyy") : ""

"Date Signed"는 내 모델의 값입니다. 이 줄은 모델 값에 값이 있으면 값을 포맷하고 그렇지 않으면 아무것도 표시하지 않습니다.

도움이 되길 바랍니다.

이것을 사용하는 대신 사용할 수 있습니다.@html.DisplayFor().

@Convert.ToString(string.Format("{0:dd/MM/yyyy}", Model.AuditDate))

다음에 대한 답변 보기No overload for method 'ToString' takes 1 arguments오류

Null 가능한 DateTime 형식은 지정할 수 없습니다. DateTime을 사용해야 합니다.속성을 값으로 지정합니다.

@Model.AuditDate.HasValue ? Model.AuditDate.Value.ToString("mm/dd/yyyy") : string.Empty

팁: 보기에 넣기 전에 지능형 표준 클래스에서 이 문제를 해결하는 것이 항상 유용합니다.이 경우 클래스에서 쉽게 찾을 수 있는 컴파일 오류가 발생합니다.

언급URL : https://stackoverflow.com/questions/28114874/html-displayfor-dateformat-mm-dd-yyyy

반응형