我想知道是否有可能在ASP.NET MVC 2中創建一個自定義強類型的HTML幫助器?創建一個常規(讀取不強類型)助手很簡單,但我很難創建強類型的版本。例如,我想創建一個DatePickerFor html幫手...是否可以創建一個自定義的ASP.NET MVC強類型的HTML Helper?
任何指導或片段將不勝感激, 預先感謝您! JP
我想知道是否有可能在ASP.NET MVC 2中創建一個自定義強類型的HTML幫助器?創建一個常規(讀取不強類型)助手很簡單,但我很難創建強類型的版本。例如,我想創建一個DatePickerFor html幫手...是否可以創建一個自定義的ASP.NET MVC強類型的HTML Helper?
任何指導或片段將不勝感激, 預先感謝您! JP
好吧,我想通了(這是非常簡單的...)。張貼我的重載之一,以防其他人遇到此問題。
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);
}
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);
}
我用ModelMetadata如果創建日期選擇器日期時間模板,這也將工作。
這是否說明'html.DatePickerFor(m => m.User.Birthday)'? (多級別的解引用?)它看起來像'.PropertyName'成員只會返回最近的名稱,不應該使用所有的級別? – 2012-12-20 21:16:46
我剛剛嘗試了以下內容來創建一個強類型的CKEditor幫助程序,它似乎是完美無缺的工作。這假定你已經在你的項目中包含了jquery和必要的ckeditor腳本。查看ckeditor配置也可能很好,但是這滿足了我目前的需求。
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);
}
@JP你是如何得到價值的?例如html.DatePicker(x => x.Date),你如何得到x.Date值 – Omu 2011-01-10 08:29:46