2012-07-01 68 views
0

在我EditorTemplates添加搜索表單,我有DateTime.cshtml - 這工作找到創建/編輯/更新的觀點:使用日期時間模板

@model Nullable<System.DateTime> 

@if (Model.HasValue) { 
    @Html.TextBox("" , String.Format("{0:dd/MM/yyyy}" , Model.Value) , new { @class = "datepicker span2" }) 
} 
else { 
    @Html.TextBox("" , String.Format("{0:dd/MM/yyyy}" , DateTime.Now) , new { @class = "datepicker span2" }) 
} 

當創建一個搜索視圖,我也想用一個日期時間選擇器 - 我如何編碼視圖使用上面的代碼,當它沒有鏈接到模型,但只是純HTML?

如果我只需要輸入以下到我的剃鬚刀標記:

@using (Html.BeginForm()) 
{ 
    <p> 
     Availability between: @Html.TextBox("From" , String.Format("{0:dd/MM/yyyy}") , new { @class = "datepicker span2" }) 
         and: @Html.TextBox("To" , String.Format("{0:dd/MM/yyyy}") , new { @class = "datepicker span2" }) 
     <input type="submit" value="Search" /></p> 
} 

我剛剛得到的錯誤:

{"Index (zero based) must be greater than or equal to zero and less than the size of the argument list."} 

感謝您的幫助,

馬克

回答

0

請勿在主視圖中使用TextBox。如果你希望你的自定義編輯模板來渲染你應該使用EditorFor幫手:

@using (Html.BeginForm()) 
{ 
    <p> 
     Availability between: 
     @Html.EditorFor(x => x.From) 
     and: 
     @Html.EditorFor(x => x.To) 

     <input type="submit" value="Search" /> 
    </p> 
} 

如果FromTo性能DateTime類型,然後ASP.NET MVC將wutomatically使您的自定義編輯模板(~/Views/Shared/EditorTemplates/DateTime.cshtml)。

+0

Hi @ Darin-Dimitrov - From和To不是房間模型的屬性(上面的視圖窗體附加到房間控制器中),而是鏈接到房間模型的屬性 - 但是這些只在控制器內部鏈接,所以我不確定在哪裏聲明From/To,以便他們被選爲DateTime。謝謝,Mark – Mark

+0

不知道你在說什麼。您應該將視圖模型傳遞給包含這些屬性的視圖。 ASP.NET MVC視圖不應該知道關於EF模型,表格,鏈接表和內容的信息。 ASP.NET MVC視圖處理**視圖模型**,它是您專門爲視圖的需求定義的類。但是如果這些日期時間位於模型的一些複雜操作中,則可以在lambda表達式中指定它:'@ Html.EditorFor(x => x.SomeProperty.To)'。 –

+0

ViewModel是我一直在尋找的東西(我一直掛在只與數據庫表連接的模型上) - 知道我之前看到過一些與之相關的東西......謝謝,Mark – Mark

1

你沒有在String.Format中指定DateTime - 這是爲什麼你得到這個錯誤,它需要一個參數,但你沒有提供任何參數。嘗試使用DateTime.Now

例如,

@Html.TextBox("From" , String.Format("{0:dd/MM/yyyy}", DateTime.Now), 
new { @class = "datepicker span2" }) 

或者,只是添加兩個DateTime屬性您的視圖模型,並使用EditorFor幫助他們。

相關問題