2016-03-15 80 views
-1

我试图让月和年出现,而不是dd/mm/yyyy。 我的代码如下:如何才能使月份和年份显示ASP.NET MVC

继承人的型号代码

[Display (Name = "ValidFrom")] 
     [DataType(DataType.Date)] 
     [DisplayFormat(DataFormatString = "{0:MMM-yyyy}" , ApplyFormatInEditMode = true)] 
     public System.DateTime ValidFrom { get; set; } 

这是视图文件

<div class="form-group"> 
     @Html.LabelFor(model => model.ValidFrom, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.ValidFrom, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(model => model.ValidFrom, "", new { @class = "text-danger" }) 

     </div> 
    </div> 

有没有办法,我只能让MM/YYYY出现?

+1

你的datepicker在哪里? – Liam

+1

@Liam我认为他并不是真的指日期选择器,而是指向',请参阅此帖http://stackoverflow.com/questions/7372038/is-there-any-way-要改变输入类型的日期格式 – SOfanatic

+0

@Liam对此表示抱歉。 – John

回答

1

应用此属性。我已经测试过这个并且工作正常。

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

从用户的角度来看,你有什么应该工作的罚款。但是,如果输入由支持dateHTML5输入类型的浏览器呈现为type="date",则浏览器控件将覆盖显示。对于每月和每年都没有HTML5控件,所以如果您需要以这种方式进行格式化,则需要确保使用标准的type="text"输入。

这就是说,我真的不确定发布的值是否会绑定回MVC。它可能,但也可能不会。如果绑定不正确,则可能需要发布到字符串属性,然后将其强制为DateTime。你可以这样做:

public string ValidFromString { get; set; } 

public DateTime ValidFrom 
{ 
    get 
    { 
     DateTime validFrom; 
     return DateTime.TryParse(ValidFromString, out validFrom) 
      ? validFrom 
      : default(DateTime); 
    } 
    set { ValidFromString = value.ToString("MMM-yyyy"); } 
} 

然后,你会张贴到ValidFromString,坚持ValidFrom

相关问题