是否可以创建自定义的ASP.NET MVC强类型HTML帮助程序?
【腾讯云】亏本大甩卖,服务器4核16G 1年370元(带宽12M,系统盘120GB SSD盘,月流量2000GB)!!!!!!
云产品 配置 价格
服务器 1核2G,带宽5M,系统盘50GB SSD盘,月流量500GB 38元/年
MySQL 1核1G 19元/年
服务器 16核32G,带宽18M,系统盘250GB SSD盘,月流量5000GB 1197元/年
点我进入腾讯云,查看更多详情

I was wondering if it is possible to create a custom strongly typed HTML Helper in ASP.NET MVC 2? Creating a regular (read not-strongly-typed) helper is straightforward but i am having difficulty creating strongly typed versions. For example, I would like to create a DatePickerFor html helper...

Any guidance or snippets would be greatly appreciated, Thank you in advance! JP

#0

Ok, I figured it out (and it was pretty straightforward...). Posting one of my overloads in case anyone else runs into this question.

public static string DatePickerFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,Expression<Func<TModel, TProperty>> expression)
  where TModel : class
{
    var inputName = ExpressionHelper.GetExpressionText(expression);
    return htmlHelper.DatePicker(inputName);
}

#1

I just tried out the following to create a strongly typed CKEditor helper and it seems to be working flawlessly. This assumes that you already have included jquery and the necessary ckeditor scripts in your project. It might be nice to look at also setting the ckeditor config too, but this satisfied my current needs.

    public static MvcHtmlString CkEditor(this HtmlHelper htmlHelper, string name, string value, object htmlAttributes)
    {
        var output = htmlHelper.TextArea(name, value, htmlAttributes).ToString();
        output += string.Format("<script type=\"text/javascript\">$(document).ready(function(){{ $('#{0}').ckeditor(); }});</script>", name);

        return MvcHtmlString.Create(output);
    }

    public static MvcHtmlString CkEditor(this HtmlHelper htmlHelper, string name, string value)
    {
        return htmlHelper.CkEditor(name, value, null);
    }

    public static MvcHtmlString CkEditorFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes) where TModel : class
    {
        ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
        return htmlHelper.CkEditor(metadata.PropertyName, metadata.Model as string, htmlAttributes);
    }

    public static MvcHtmlString CkEditorFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression) where TModel : class
    {
        return htmlHelper.CkEditorFor(expression, null);
    }

#2

public static string DatePickerFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,Expression<Func<TModel, TProperty>> expression)
  where TModel : class
{
    ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
    return htmlHelper.DatePicker(metadata.PropertyName);
}

I used ModelMetadata this will also work if you create a datetime template for datepicker.

推荐文章

Prolog中的变量

Prolog中的变量

推荐文章

秒表怪异行为

秒表怪异行为

推荐文章

ASP.NET:混合服务器控件和客户端控件?

ASP.NET:混合服务器控件和客户端控件?

推荐文章

我有一个自定义的ODBC驱动程序驻留在一个远程计算机上,无论如何我都可以与本地计算机“共享”它?

我有一个自定义的ODBC驱动程序驻留在一个远程计算机上,无论如何我都可以与本地计算机“共享”它?

推荐文章

jQuery函数不工作

jQuery函数不工作

推荐文章

进程间通信

进程间通信

推荐文章

如何安全地从iPhone应用程序同步远程数据库上的数据?

如何安全地从iPhone应用程序同步远程数据库上的数据?

推荐文章

碳罐排气口和二次螺纹

碳罐排气口和二次螺纹

推荐文章

在Silverlight中浏览活动目录

在Silverlight中浏览活动目录

推荐文章

iVar属性,通过self访问?

iVar属性,通过self访问?

推荐文章

使用mercurial设置文件所有权

使用mercurial设置文件所有权

推荐文章

通过FTP获取文件列表

通过FTP获取文件列表

推荐文章

视图和控制器的zend转换

视图和控制器的zend转换

推荐文章

Grails多对多关联和防止级联

Grails多对多关联和防止级联

推荐文章

Delphi注释

Delphi注释

推荐文章

django通知不发送任何电子邮件

django通知不发送任何电子邮件