【发布时间】:2014-06-13 03:11:01
【问题描述】:
我有一个自定义 MVC 扩展,它接受 Expression<Func<TModel, object>> 的表达式。我正在尝试传入以下基于列表的表达式:
i => i.List[i].CreatedDate
表达式是正确的,当表达式是不同助手的字符串时,它可以正常工作。但是当我使用它并且值是日期时,当我使用它时它不会返回任何内容:
Html.IdFor(expression);
即使我使用
ExpressionHelper.GetExpressionText(expression);
它返回空。该表达式不为空,并表明它正确映射到该字段。为什么以及如何让表达式与日期一起使用?
编辑:在帮助程序中运行的底层代码是(注意:选项只包含具有 get/set 属性的值;它确实包含一个有效值作为表达式)。
var id = Html.IdFor(options.Expression).ToHtmlString();
var name = Html.NameFor(options.Expression).ToHtmlString();
var tag = new TagBuilder("input");
tag.Attributes.Add("id", id);
tag.Attributes.Add("name", name);
if (options.HtmlAttributes != null)
{
foreach (var htmlAttribute in options.HtmlAttributes)
{
if (htmlAttribute.Value != null)
tag.Attributes.Add(htmlAttribute.Key, htmlAttribute.Value.ToString());
}
}
return new MvcHtmlString(tag.ToString());
【问题讨论】:
-
能把扩展的代码放上来
-
好的,但是扩展非常简单,所以我真的不明白这会有什么帮助。
标签: c# asp.net .net asp.net-mvc lambda