2014-10-31 63 views
1

我有一個領域像HolidayYear使得如下,如何使用年裝載機asp.net MVC

[Required] 
[DisplayName(Constants.DisplayName.HolidayYear)] 
public virtual int HolidayYear { get; set; } 

在該事件中,我要挑年僅爲HolidayYear文本框,不想要使用日期選擇器。那麼我需要添加的代碼是什麼?任何人都可以請,幫助找到解決辦法...... 而我CSHTML文件以下

<div class="row"> 
     <div class="col-md-3"> 
       <label for="" class="control-label"> 
        Year 
       </label> 
       <br /> 
       @Html.EditorFor(model => model.HolidayYear, new { @class = "form-control" 
               }).DisableIf(() => Model.IsReadOnly == true) 
     </div> 
    </div> 
+0

如果你只需要一年,爲什麼你沒有'int'字段並且使用例如一個select有一些可用年份? – 2014-10-31 14:22:00

+0

其實我錯了,所以想改變那個。如果你知道解決方案,那麼請幫助 – 2014-10-31 14:31:22

+0

請任何人幫忙 – 2014-10-31 14:37:49

回答

2

你應該做一個下拉列表。因此,而不是使用@Html.EditorFor使用:

@Html.DropDownListFor(m => m.HolidayYear, HolidayController.GetDropDownListForYears()) 

哪裏HolidayController.GetDropDownListForYears()是你的控制器返回一個下拉列表上的靜態方法。它可能看起來像這樣:

public static List<SelectListItem> GetDropDownListForYears() 
{ 
    List<SelectListItem> ls = new List<SelectListItem>(); 

    for(int i=2014; i<=2099;i++) 
    { 
     ls.Add(new SelectListItem() { Text = i.ToString(), Value = i.ToString() }); 
    } 

    return ls; 
} 
+1

你需要'i <= 2014'爲你的for循環的中間語句,否則它只會上升到2013年。我還建議從2014年開始並繼續前進,因爲在上下文中,我不認爲我想在1900年假期去說實話:P – jbutler483 2014-10-31 15:32:44

+0

你說得對。我會改變答案。 – Niclassg 2014-11-01 07:30:47

0

您可以使用kendo控制它。

@using Kendo.Mvc.UI; 

@(Html.Kendo().DatePicker().Name("datepicker").HtmlAttributes(new { style = "width:110px" }))