2012-05-13 77 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