I'm trying to create a lambda expression to pass to the view via my MVC helper extension to be used.
What I tried is similar to this :
Expression<Func<DoubleNumber,DoubleNumber>> expr2 = (DoubleNumber g) => g.Num1;
The default expression was passed like this :
public static MvcHtmlString DoubleBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
//int id,
Expression<Func<TModel, TProperty>> expression)
{
...
The Model class
public class DoubleNumber
{
public int Num1 { get; set; } // tried strings but again they are null
public int Num2 { get; set; }
}
After using the correct expression format still won't be able to use it : The correct format:
Expression<Func<DoubleNumber,int>> expr2 = (DoubleNumber g) => g.Num1;
which mentioned in the comments.
Error:
"the type arguments cannot be inferred from the usage. try specifying the type arguments explicitly."
Thanks for any help. Edited 2 - reformed
The Code is proveided :
public static class DoubleBoxHelper
{
public static MvcHtmlString DoubleBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
//int id,
Expression<Func<TModel, TProperty>> expression)
{
var builder = new StringBuilder();
var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
var model = metadata.Model as DoubleNumber;
var name = ExpressionHelper.GetExpressionText(expression);
var fullName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name);
var fieldId = TagBuilder.CreateSanitizedId(fullName);
// I'm going to use something like this instead of "expression" which seems because of the format or parameter or anything else it's producing an error which I mentioned,
Expression<Func<DoubleNumber,int>> expr2 = (DoubleNumber g) => g.Num1;
//The line which will cause the error happened
builder.AppendLine(htmlHelper.TextBoxFor(expr2 , new {class, etc} )
...
}
I also tried some other forms of TextBoxFor like TextBoxFor or tried to make Expression> each will have some inner issue, and still looking for a neat solution.
Thanks
DoubleNumbertype defined? Does it have aNum1property?DoubleNumberand returnsNum1Expression<Func<DoubleNumber,int>> expr2 = (DoubleNumber g) => g.Num1;?