2011-01-29 7 views
2

強く型付けされたヘルパー(ref:SO question)を作成しています。下のコードで「コメントされました」のように、は何とか表現されたプロパティから値を取得することができ、オプションのselectedValueパラメータをバイパスできますか?.NET MVC強力な型付きヘルパー - プロパティから値を取得しますか?

<Extension()> _ 
    Public Function DatePickerFor(Of TModel As Class, TProperty)(ByVal htmlHelper As HtmlHelper(Of TModel), ByVal expression As Expression(Of Func(Of TModel, TProperty)), Optional ByVal selectedValue As Nullable(Of Date) = Nothing) As MvcHtmlString 
     Dim inputName = ExpressionHelper.GetExpressionText(expression) 
     Dim inputValue = selectedValue 
     //Something like this possible? 
     //inputValue = ExpressionHelper.GetExpressionValue(expression) 
     Return DatePicker(htmlHelper, inputName, inputValue) 
    End Function 

答えて

9

エクスプレッションがあなたを指していることFromLambdaExpression方法使用することができ、対応するプロパティの値を取得したい場合:

Dim metadata = ModelMetadata.FromLambdaExpression(expression) 
Dim value = metadata.Model 
+0

私が必要とするまさに、感謝を。 – Ropstah

+3

MVC3でModelMetaDataにViewDataパラメータが必要なように見えるので、試してみてください:ModelMetadata.FromLambdaExpression(expression、htmlHelper.ViewData); –

+0

私はこれを使いました:expression.Compile()。Invoke(html.ViewData.Model);価値を得るためにはうまくいく –

関連する問題