2017-11-28 2 views
1

매우 분명한 이상한 문제 일 수 있습니다. 내보기 모델에서 나는 컨트롤러에 설정 한 날짜가 있습니다. 보기에서 텍스트 상자를 렌더링하면 비어 있습니다."date"유형을 추가 할 때보기 textboxfor의 날짜가 비어 있습니다.

보기 모델 :

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

컨트롤러 :이 열 때

<p> 
     Date:<br /> 
      @Html.TextBoxFor(model => model.DateStart, new { @class = "form-control", placeholder = "Invoice date", type = "date" }) 
    </p> 

, 나는 여기에 빈 텍스트 상자를 얻을 :

를보기

//GET: InvoicePrice 
    public ActionResult Index(InvoicePriceViewModel model) 
    { 
     model.DateStart = DateTime.Now; 
     return View(model); 
    } 

HTML

enter image description here

그리고 "28-11-2017"이 현재 날짜로 표시 될 것으로 예상됩니다.

내가 여기 뭔가 명백한 것이없는 것 같습니다. 그러나 그것은 무엇입니까? 이 같은

답변

2

여기에 실제로 문제의 몇 가지 내가 그들에게 설명하려고합니다.

첫 번째 문제는 date inputyyyy-mm-dd 형식으로 값을 받아 브라우저 현지화 설정에 따라이를 표시이다 :주의해야 할

한 가지가 표시되는 날짜 형식이 실제 값과 다른 점이다 - 표시 날짜 형식은 항상 yyyy-mm-dd로 형식화되지만 사용자 브라우저의 설정 로케일에 따라 날짜 형식이 선택됩니다. 사용자 정의 형식으로 촬영하기 때문에 위해

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 

여전히 영향을주지 않습니다하지만 :

이것은 당신이 당신의 DataFormatString을 변경해야하고 true로 ApplyFormatInEditMode을 설정 의미 당신이 Html.EditorFor 사용할 필요가 계정 :

@Html.EditorFor(model => model.DateStart, 
    new { htmlAttributes = new { @class = "form-control", placeholder = "Invoice date" } }) 

을 또는 당신은 DisplayFormatAttribute을 무시하고 형식을 지정할 수 있습니다 the Html.TextBoxFor :

@Html.TextBoxFor(model => model.DateStart, "{0:yyyy-MM-dd}", 
    new { @class = "form-control", placeholder = "Invoice date", type = "date" }) 
+0

어이 남자! 절대적으로 의미가 있습니다. 그러나, 나는 두 접근법 모두 시도하고 둘 다 시도하지 않았다. 나는 그것이 이전에 작동하지 않았던 이유를 이해하지만, 형식을 변경 한 후에도 여전히 왜 아무것도 보이지 않는지 이해할 수 없습니다. 우리가 놓칠 수있는 것이 분명해? –

+0

@ LarsHoldgaard,이 작업이 정상적으로 수행되어야합니다. 페이지의 소스 코드를 검사하고 값이'value = "2017-11-28"'로 렌더링 된 형식을 검사하거나'type = "date"'를 제거 할 수 있습니다. – Zabavsky

0

시도 뭔가 :

@foreach (var item in Model) 
{ 
    <p> 
     Date:<br /> 
      @Html.TextBoxFor(modelItem => item.DateStart, new { @class = "form-control", placeholder = "Invoice date", type = "date" }) 
    </p> 
} 
관련 문제