2011-10-21 40 views
0

我爲我的datetime字段中的2使用了html.textbox,因爲我需要以特定格式格式化它們,但我不知道如何通過html.textboxfor 。 不過,我意識到我需要有用於驗證的textboxfor在我的模型類的工作:MVC 3 - 將Html.TextBox更改爲Html.TextBoxFor

[Required(ErrorMessage = "Storage Date is required")] 
    [DataType(DataType.DateTime, ErrorMessage = "Please input a valid date")] 
    public DateTime StorageDate { get; set; } 

任何想法,我怎樣才能改變我的Html.Textbox以下,進入Html.TextBoxFor具有相同的設置?

@Html.TextBox("expirydate", String.Format("{0:ddd, d MMM yyyy}", DateTime.Now), new { id = "expirydate" }) 
    @Html.ValidationMessageFor(model => model.ExpiryDate) 

感謝所有幫助...謝謝...

回答

1

你真的不需要使用TextBoxFor()進行驗證工作。如果您的文本框與模型中的字段具有相同的ID,則模型聯編程序會將其選中。如果您正在討論獲得不顯眼的驗證功能,您可以隨時手動將data- *屬性添加到TextBox。

但是,在這種情況下,聽起來像你真正想要的是自定義編輯器,使用EditorFor()。這需要更多的工作,但是它可以讓用戶通過給用戶類似日期/時間選擇器控件的方式實際執行日期/時間格式。其基本思想是:

  • 創建一個名爲DateTime.cshtml的局部視圖綁定到Nullable<DateTime>類型的模型,並把它放到Shared/EditorTemplates視圖文件夾。
  • 使用jQuery和jQueryUI將樣式爲日期/時間選擇器的HTML文本框放入局部視圖中。
  • 裝飾的財產你的模型與[DataType(DataType.DateTime)]屬性
  • 使用Html.EditorFor(model => model.WhateverProperty)

幸運的是,日期/時間選擇可能是最流行的定製MVC3編輯器,因此有大量的例子,從挑選;從this question代碼工作正常,只要確保注意到答案的建議,並替換此行的部分觀點:

@inherits System.Web.Mvc.WebViewPage<System.DateTime> 

與此:

@model System.DateTime? 
+0

您好,感謝了很多,但實際上我以前用過editorfor。但是,我需要對每個datetime字段datepicker做一些不同的設置,所以我用不同的id將它分開。順便說一句,我也注意到我並不需要textboxfor驗證工作! – shennyL

相關問題