2011-01-29 5 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); 가치를 얻고 잘 작동한다. –