2012-05-13 125 views
0

HTML我希望能夠做這樣的事情:ASP MVC強類型的無剃刀

<input [email protected] (as the actual property name and not its value) [email protected] type="text/> 

使模型綁定仍然工作,但我並不需要使用剃刀幫手。

+1

你不應該編輯:在回答將是:使用HtmlHelpers(他們將是正確的!) –

+0

@RaphaëlAlthaus我想到了這一點,並意識到它們在某些情況下確實有價值,但該死的他們可能會對簡單的事情感到惱火!,所以我重新說明了我的問題。 – Lee

回答

1

您可以添加一個輔助方法返回的顯示名稱:

public static MvcHtmlString GetPropertyName<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression) 
     { 
      var metaData = ModelMetadata.FromLambdaExpression<TModel, TProperty>(expression, htmlHelper.ViewData); 
      string value = metaData.PropertyName ?? expressionHelper.GetExpressionText(expression); 
      return MvcHtmlString.Create(value); 
     } 

然後你只需使用:@ Html.GetPropertyName(M => m.SomeProperty)

+0

我很喜歡這個想法,那麼我只能使用Razor助手,他們實際上增加了價值,比如驗證助手,並且不會將它們用於像組合框,文本框,表單,url等我認爲它們只是簡單的東西擋道。 – Lee

+0

我當然會意識到使用剃刀助手避免使用剃刀助手的諷刺:) – Lee

+0

嗯,這取決於你...我個人認爲我的視圖更方便使用@ Html.TextBoxFor而不是寫所有的html自己。 – Romias