programing tip

EditorFor ()에 형식이 지정된 날짜 표시

itbloger 2020. 12. 28. 07:54
반응형

EditorFor ()에 형식이 지정된 날짜 표시


인트라넷 웹 앱을 개발하기 위해 MVC4 및 Entity Framework를 사용하고 있습니다. 편집 할 수있는 사람 목록이 있습니다. 편집보기에 액세스하면 "시작일"텍스트 상자에 날짜가 다음과 같이 표시됩니다 7/11/2013 00:00:00.. 내가 원하는 것은 yyyy / MM / dd 형식으로 표시하는 것입니다. 나는 시도 String.Format("{0:yyyy/MM/dd}", item.StartDate)했지만 작동하지 않습니다. 나는 또한 주석으로 시도했지만 [DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]둘 다 작동하지 않습니다.

내 견해로는 다음과 같습니다.

<div class="editor-field">
        @Html.TextBoxFor(model => model.StartDate, new { @class = "datepicker" })
        @Html.ValidationMessageFor(model => model.StartDate)
    </div>

어떻게해야하는지 아십니까?


@Html.TextBoxFor(m => m.StartDate, 
    new { @Value = Model.StartDate.ToString("yyyy/MM/dd"), @class="datepicker" })

여기에 이미지 설명 입력

귀하의 질문은 요청 EditorFor()하지만 귀하가 제공 한 코드는 TextboxFor().

당신에 모델 (예 : MyModel.cs), 당신은해야합니다 :

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

당신의에서 보기 당신이 쓴 것처럼 (예 : Index.cshtml), 당신은 단순히 그것을 사용 :

@Html.EditorFor(m => m.StartDate, new { htmlAttributes = new { @class = "datepicker" } })

예상대로 작동합니다.

그렇게함으로써 (뷰에 표시되는 방식을 변경하는 대신) 모델을 다른 곳에서 재사용 할 수 있으며 뷰에 날짜를 표시하는 방법을 지정할 필요가 없습니다. 따라서 어떤 이유로 표시 형식을 변경해야하는 경우 한 번만 변경하면됩니다.

이 솔루션은 MVC 5에서도 작동합니다.


나에게 가장 쉬운 것은 type 속성 을 추가하는 것입니다.

@Html.EditorFor(model => model.FechaRegistro, new { htmlAttributes = new { @class = "form-control oso" ,@type = "date"  } })

Html.EditorFor도 작업


@Html.EditorFor(model => model.StartDate, new { htmlAttributes = new { @class = "datepicker", @Value = model.StartDate.ToString("yyyy/MM/dd") } })

나는 여기에서 (또한 MVC와 함께) 멍청한 사람이고 이것은 부분 클래스를 사용하는 Maxime의 변형 일뿐입니다 ...

DB 우선 모델이 있고 변경 사항을 잃을 까봐 직접 변경하지 않으려면 부분 클래스에서 동일한 작업을 수행하십시오. Models 폴더에 새 클래스 / 파일을 추가하고 생성 된 모델과 동일한 네임 스페이스를 사용하는지 확인하십시오.

따라서 다음은 날짜 형식을 지정하고 다른 값의 표시 이름을 수정하기 위해 메타 데이터를 선언하는 방법입니다 (예 : 테이블의 열 머리글을 축약하기 위해).

namespace MyProjectName.Models
{

    public class MyModelMeta
    {

        [DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]  // format used by Html.EditorFor
        public DateTime StartDate;

        [Display(Name = "User ID")] // abbreviation shown in Html.DisplayNameFor
        public string SomeReallyLongUserIDColumn;

    }

    [MetadataType(typeof(MyModelMeta))]
    public partial class MyModel
    {

    }
}

이것을 시도하십시오 .. 문제를 해결할 수있는 textboxfor .. 내의 htmlAttribute로 날짜 값을 변환하십시오.

<div class="editor-field">
    @Html.TextBoxFor(model => model.StartDate, new { htmlAttributes = new { @Value = Model.StartDate.ToString("yyyy/MM/dd"), type = "date"  }})
    @Html.ValidationMessageFor(model => model.StartDate)
</div>

참조 URL : https://stackoverflow.com/questions/15943797/display-a-formatted-date-in-an-editorfor

반응형