c# - 如何编写自定义@Html.Control For(o => o.Property)?

标签 c# asp.net-mvc asp.net-mvc-3 razor html-helper

我想创建一个自定义方法,以便能够调用它

@Html.PaginationFor(o => o.List)

我开始看反射器,但我不确切知道它在那边做什么。我试过:

public static MvcHtmlString PaginationFor<TModel, TProperty>(this Html<TModel> html,
    Expression<Func<TModel, TProperty>> expression)
{
    var propertyValue = ????????
    return html.Partial("View", propertyValue);
}

如何从表达式中提取属性值以作为局部 View 的模型传递?

最佳答案

public static MvcHtmlString PaginationFor<TModel, TProperty>(
    this HtmlHelper<TModel> html,
    Expression<Func<TModel, TProperty>> expression
)
{
    TModel model = html.ViewData.Model;
    var metaData = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
    var propertyValue = metaData.Model; // This will be of type TProperty
    return html.Partial("View", propertyValue);
}

关于c# - 如何编写自定义@Html.Control For(o => o.Property)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6710917/

相关文章:

c# - 使用MenuItem值作为CommandParameter

asp.net-mvc - 单元测试 ModelState.IsValid

asp.net-mvc - 网站管理工具未启动

asp.net-mvc - 流畅的 API 和数据注释

c# - 如何将日志记录添加到 Blazor 服务器端组件?

c# - 不支持 NTwain ICapSupportedSizes

jquery - 如何为日期时间选择器文本框应用样式

javascript - 将数据从 ASp.NET MVC Controller 传递到 JavaScript 函数

javascript - Cufon 无法使用日语文本

C# 多线程行为