2012-01-31 62 views
8

有沒有一種方法可以在MVC視圖中的文本框上爲屬於placeholder的屬性應用數據註釋?爲MVC中的文本框的佔位符attr提供數據註釋

例子:

在我ViewModel.cs,像這樣:

[Placeholder="First name"] 
public string FirstName { get; set; } 

筆者認爲:

@this.Html.TextBoxFor(m => m.FirstName) 

如果可能呈現這樣的:

<input type="text" placeholder="First name" ... /> 

這可能嗎?謝謝!

回答

10

嘗試

@this.Html.TextBoxFor(m => m.FirstName, new{placeholder="First name"}) 

啊,不是模型。

您可以定義自己的客戶屬性http://blogs.msdn.com/b/aspnetue/archive/2010/02/24/attributes-and-asp-net-mvc.aspx。我想你會需要一個自定義的html助手來生成html。

+1

這太棒了!你知道我需要從哪個屬性繼承嗎?鏈接中的示例繼承自'ActionFilterAttribute' – 2012-02-01 15:01:01

+0

該示例具有屬性類列表,請選擇最接近您想要執行的操作的示例。或者使用System.Attribute的繼承進行乾淨的(er)啓動。 – PhilW 2012-02-01 17:23:17

0

我不這麼認爲,但是你可以編寫自己的自定義幫手和屬性來完成它。 http://www.aspnetwiki.com/page:creating-custom-html-helpers

+0

感謝您的鏈接!不幸的是,我沒有看到任何可以在我的視圖模型中的屬性上方有'[Placeholder =「First name」]'的例子。相反,這裏有'this.Html.TextboxFor(m => m.FirstName,「佔位符文本在這裏)」的例子,這會破壞目的,因爲我希望這個硬編碼文本與視圖模型一起使用,而不是風景。 – 2012-01-31 20:41:35

+0

我知道,你需要推出自己的幫手和屬性。在這裏,BuildStarted的答案顯示了他是如何創建自定義屬性的,http://stackoverflow.com/questions/7418664/access-displayname-attribute-from-the-model-in-mvc-view。您自定義的助手可以讀取您的自定義屬性。 – 2012-01-31 22:31:42