2013-12-10 73 views
5

(編輯是所謂的 「A日期」添加類EditorFor - 剃刀C#

我想這一點,但它不工作一個DateTime屬性

@Html.EditorFor(model => model.ADate, new { cssClass = "date" }) 

所以,我想這一點:

@Html.TextBoxFor(model => model.ADate, new { @class = "date" }) 

但它輸出類型=文本.. ofcourse它

所以我嘗試了模板......我在共享添加的文件夾:

Shared/EditorTemplates 

,然後我創建了一個名爲Date.cshtml

現在什麼在地球上我把它裏面一個.cshtml局部視圖:o ...

我試圖瞭解很多職位和堆棧溢出的條目,但它不是在下沉。

的目標是到日期選擇器附加到類「.date」整個應用程序,其中「。日期」類使用... TextBoxFor與我的添加類部分...但正如我所說,類型從日期更改爲文字:(

+0

^h你讀過這個:http://www.nickharris.net/2010/08/asp-net-mvc-editor-template-for-jquery-datepicker/? –

+0

@FilipEkberg - 我需要更多的幫助哥們..完全不明白:) – Jimmyt1988

回答

7

好吧,所以這是你可以做的:

在你的EditorTemplates文件夾中創建一個名爲DateTime.cshml的模板(如果你使用日期名稱將自動解析,否則你必須在使用它時指定它)。 然後在它:

@model System.DateTime 

@Html.TextBox(
    string.Empty, 
    Model.ToString("yyyy-MM-dd"), 
    new { @class="datepicker", @type = "date"}) 

使用,您可以指定任何HTML屬性的最後一個參數(類,數據類型等)。

然後你使用這樣的:

@Html.EditorFor(x => x.ADate) 

如果你選擇的名字用不同的名稱您的模板,你可以通過調用另一個重載指定它:

@Html.EditorFor(x => x.ADate, "MyOtherAwesomeTemplate") 
+0

由於某種原因,當名稱是「DateTime.cshtml」時,模板沒有被調用,而是我必須明確地調用它重載的字符串?有任何想法嗎?我的財產是定義DateTime類型 – Jimmyt1988

+0

@JamesT嘿詹姆斯,不知道這個問題可能是什麼。你確定你沒有多個模板?另外,你的模板位於'Views/Shared/EditorTemplates /'?你能否展示你如何使用它(以及你如何定義它)?我已經嘗試過在每個場景中測試它,但我無法重現。 –

2

的EditorFor HTML幫手不會爲您的日期時間屬性渲染日期選擇器(如果這是您想要的)。 DateTime的默認EditorFor是一個文本輸入。如果您想使用日期選擇器,則必須使用jQuery DatePicker(或任何其他第三方日期選擇器)。

此外,EditorFor幫助程序沒有html屬性的參數。如果你想分配一個類,你必須使用TextBoxFor。

在主視圖中,使用EditorFor這樣的:

@Html.EditorFor(model => model.ADate) 

然後,在你編輯模板(日期。CSHTML),你必須:

@model System.DateTime 

<script type="text/javascript"> 
    $(function() { 
     $(".date").datepicker(); 
    }); 
</script> 

@Html.TextBox("", Model.ToString("d"), new { @class = "date" }) 

你可以從這裏下載jQuery用戶界面:Download jQuery UI

而且,您可以詳細瞭解了jQuery的DatePicker這裏:jQuery DatePicker

+0

感謝您的幫助人,也有幫助 – Jimmyt1988

0

你可以這樣做

@Html.EditorFor(model => model.ADate) 

<style type="text/css"> 

#ADate 
{ 
@* your css properties goes here *@ 
} 
</style> 

這個工作得很好MVC3剃刀