2011-02-19 35 views
0

屬性的含型號我有一個HTML輔助具有以下簽名:我能到在MVC2 HTML輔助

public static MvcHtmlString UiAutoCompleteForWithId<TModel, TProperty>(this htmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes) 

我知道如何讓我的手在成員中傳遞的價值它是元數據,但是無論如何要訪問包含模型,或者更具體地說,通過名稱傳遞給成員的特定同級成員(屬性)的值?

乾杯, 馬修

編輯:好吧,我覺得(你看到它之前誒有時需要問嗎?)我可以做到這一點使用方法ModelMetadata.FromStringExpression,但我就是這樣去了解的最佳方式這個?

回答

1

如果您需要訪問兄弟成員的值,這意味着您認爲視圖模型具有此兄弟成員。這意味着你的html helper不再需要是通用的。你可以這樣做:

或者,如果您的視圖模型實現包含兄弟成員討論一些共同的基本接口,你可以指定一個通用的限制:這是很好的

public static MvcHtmlString UiAutoCompleteForWithId<TModel, TProperty>(
    this HtmlHelper<TModel> helper, 
    Expression<Func<TModel, TProperty>> expression, 
    object htmlAttributes 
) where TModel: ISomeInterface 
{ 
    ISomeInterface model = helper.ViewData.Model; 
    var value = model.SomeOtherSiblingProperty; 
    // TODO: do something with this property 
    ... 
} 
+0

啊。我結束了使用ModelMetadata.FromStringExpression,它工作,但你看起來更乾淨。我沒有想到這一點,我感到有點愚蠢。 – 2011-02-22 16:41:47