2013-06-20 30 views
0

,我有以下幫手我建的,所以我可以有一個日期選擇器領域:在自定義幫手ID使用模型方法名

public static MvcHtmlString DatePickerFor<TModel>(this HtmlHelper<TModel> helper, Expression<Func<TModel, object>> property, string minDate = "2012-01-01", string maxDate = "2100-01-01") 
    { 
     TModel model = helper.ViewData.Model; 
     var builder = new TagBuilder("input"); 
     builder.Attributes.Add("id", "id"); 
     builder.Attributes.Add("type", "date"); 
     return MvcHtmlString.Create(builder.ToString()); 

    } 

我想要做的是生成ID和姓名我從我的視圖傳遞給它的模型方法與您可以使用任何其他EditorFor或RadioButtonFor字段完全一樣。

在我把它叫做這樣的觀點:

@Html.DatePickerFor(model => model.EntryDate) 

因此,在這種情況下,我想ID和名稱爲「EntryDate」。我試着在helper.ViewData和其他元數據中查找,但找不到任何可以使用的東西。術語「模型方法名稱」可能是錯誤的,請隨時糾正我。

+0

是否使用強類型的看法?如果你使用屬性DataType = DataType.Date來標記你的Model屬性,那麼EditorFor生成的html將是一個輸入類型= Date – Fals

+0

是的,但我還沒有更多的解釋爲什麼我要創建它一個自定義幫助器,而不是使用DataType的EditorFor。 – MrJinPengyou

回答

0

您可能需要使用使用表達式代碼(如this SO answer)來獲取屬性名稱作爲字符串。

這裏的鍵位,採取行動時,你的拉姆達model => model.EntryDate

var expression = (MemberExpression)action.Body; 
string name = expression.Member.Name;