@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>
단순히 해당 모델 속성의 값을 출력하는 경우에는 다음이 필요하지 않습니다.DisplayFor
html 도우미, 올바른 문자열 형식으로 직접 호출하십시오.
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)
합니다.M
m
이 도우미들 속에
전체 프로젝트에 이 형식을 적용할 때 뷰 모델에서 [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")
}
나에게는 그것은 사용하기에 충분했습니다.
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime StartDate { set; get; }
저는 다음과 같은 방식으로 비슷한 것을 구현했습니다.
- 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) 메서드가 사용됩니다.이 방법을 사용하면 사용할 필요가 없습니다.Thread
의CurrentCulture
소유물.그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
}
간단하게 시도해보세요.
@(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
'programing' 카테고리의 다른 글
jquery를 사용하여 div가 있는지 확인합니다. (0) | 2023.05.12 |
---|---|
Atlas MongoDB 클라우드 서비스에 Heroku 앱 연결하기 (0) | 2023.05.12 |
Git에서 하나의 파일을 임의 버전으로 디핑하는 방법은 무엇입니까? (0) | 2023.05.12 |
목록의 문자열 값 바꾸기 (0) | 2023.05.12 |
IQueryable과 INumberable의 차이점은 무엇입니까? (0) | 2023.05.12 |