2012-03-30 40 views
1

我在ViewModel中有一個「float」類型的屬性。它顯示爲默認值爲「0」的文本框。未在ASP.NET MVC 3中調用「Floats」的EditorTemplate

我增加了一個「EditorTemplates」文件夾中的「共享」文件夾中創建&用下面的內容的新「Float.cshtml」文件中:

@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue == 0 ? "" : ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line" }) 

然而,仍然當我運行該應用程序時,浮動字段仍然被顯示爲默認值爲0。

感謝

UPDATE 我只是想看看ASP.NET如何反應CUS湯姆模板,到現在爲止,發動機不處理我的自定義模板,類似的東西:

LatLng.cshtml 

@model float 
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line "}) Latitude 

在視圖模型,

[UIHint("LatLng")] 
    public float? Latitude { get; set; } 

在視圖,

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

沒有什麼正在使用默認模板。

+1

您不顯示如何將編輯器添加到窗體/標記。你使用'Html.EditorFor()'? – 2012-03-30 17:44:29

回答

0

一個簡單的解決方法是,如果你只是設置ViewData.TemplateInfo.FormattedModelValue返回模型中的字符串,所以你不必在視圖上做怪異的邏輯。如果您需要它回發一個新值(用於編輯目的),您只需在控制器中添加一些邏輯即可將字符串轉換爲浮點。

5

Float實際上並不是一個.NET類型,它是一個C#類型。 Float映射到System.Single,所以你需要創建一個Single.cshtml而不是Float.cshtml。

您還可以通過在模型數據上指定UIHint屬性或指定要在Editor或EditorFor方法中使用的模板來解決此問題。

+0

屏幕上顯示的文本框包含值0時是否正常?另外,我對模板非常陌生,背後有什麼想法,如何使用它們?謝謝 – Bill 2012-03-30 20:35:50

+0

是的,數字文本框默認顯示爲0。模板基本上是MVC的用戶控件版本,它們允許您爲任何喜歡的類型創建自定義顯示。 – mattytommo 2012-03-30 21:47:12

+0

@bhaidar - 如果它包含0,它將顯示0.是的,它顯示數據項中的任何值是正常的。 – 2012-03-31 00:29:40