Asp.net mvc MVC过滤器编辑器
我想在我的cshtml列表中有一个过滤器行,在那里我可以使用该列的编辑器。 我想要字符串字段的文本编辑器,带外键约束的字段的下拉编辑器,日期字段的日期编辑器 下面是我的自动生成模型Asp.net mvc MVC过滤器编辑器,asp.net-mvc,razor,Asp.net Mvc,Razor,我想在我的cshtml列表中有一个过滤器行,在那里我可以使用该列的编辑器。 我想要字符串字段的文本编辑器,带外键约束的字段的下拉编辑器,日期字段的日期编辑器 下面是我的自动生成模型 public partial class MEMBER { public int ID { get; set; } [Display(Name="Title")] public string TITLE { get; set; } public string FIRST_NAME {
public partial class MEMBER
{
public int ID { get; set; }
[Display(Name="Title")]
public string TITLE { get; set; }
public string FIRST_NAME { get; set; }
public string MIDDLE_NAME { get; set; }
public string LAST_NAME { get; set; }
public string SUFFIX { get; set; }
public string EMAIL { get; set; }
public string PHONE { get; set; }
public string EXT { get; set; }
public string FAX { get; set; }
public string STATE { get; set; }
public string PARTY { get; set; }
public string DISTRICT { get; set; }
public string ACTIVE { get; set; }
public Nullable<System.DateTime> ACTIVATED_DT { get; set; }
public string ACTIVATED_ID { get; set; }
public Nullable<System.DateTime> DEACTIVATED_DT { get; set; }
public string DEACTIVATED_ID { get; set; }
public string ROOM { get; set; }
public string MOST_ACTIVE_ISSUES { get; set; }
public string NOAA_NEXT_GEN { get; set; }
public Nullable<short> REELECTION { get; set; }
public string COMMENTS { get; set; }
public string MEMBER_DISTINCTION { get; set; }
public string FLAG_TYPE { get; set; }
public string CURR_STATUS { get; set; }
public virtual US_STATE US_STATE { get; set; }
}
在我的定制助手中,我会有这样的东西
public static MvcHtmlString FilterEditorFor<TModel, TValue>(this HtmlHelper<IEnumerable<TModel>> html, Expression<Func<TModel, TValue>> expression
)
{
MvcHtmlString result = new MvcHtmlString("");
// return MvcHtmlString.Create(TemplateHelpers.TemplateHelper(html, html.ViewData.ModelMetadata, String.Empty, null /* templateName */, DataBoundControlMode.Edit, null /* additionalViewData */));
ModelMetadata mm = html.ViewData.ModelMetadata;
string s = "";
switch (mm.DataTypeName)
{
case "DateTime":
s = "<input id='{0}' class='xgFilterDate' type='text'>";
break;
case "bool":
s = "<input id='{0}' class='xgFilterDate' type='checkbox'>";
break;
case "string":
s = "<input id='{0}' class='xgFilterText' type='text'>";
break;
default:
break;
}
s = string.Format(s, mm.ModelType.Name + "_" + mm.ShortDisplayName);
return new MvcHtmlString(s);
}
public static MvcHtmlString FilterEditorFor(此HtmlHelper html,表达式
)
{
MvcHtmlString结果=新的MvcHtmlString(“”);
//返回MvcHtmlString.Create(TemplateHelpers.TemplateHelper(html,html.ViewData.ModelMetadata,String.Empty,null/*templateName*/,DataBoundControlMode.Edit,null/*additionalViewData*/);
ModelMetadata mm=html.ViewData.ModelMetadata;
字符串s=“”;
开关(mm.DataTypeName)
{
案例“日期时间”:
s=“”;
打破
案例“bool”:
s=“”;
打破
大小写“字符串”:
s=“”;
打破
违约:
打破
}
s=string.Format(s,mm.ModelType.Name+“”+mm.ShortDisplayName);
返回新的MvcHtmlString;
}
我似乎无法让自定义助手正常工作。有人有想法吗?它以什么方式不“正常工作”?mm.DataTypeName总是空的。
public static MvcHtmlString FilterEditorFor<TModel, TValue>(this HtmlHelper<IEnumerable<TModel>> html, Expression<Func<TModel, TValue>> expression
)
{
MvcHtmlString result = new MvcHtmlString("");
// return MvcHtmlString.Create(TemplateHelpers.TemplateHelper(html, html.ViewData.ModelMetadata, String.Empty, null /* templateName */, DataBoundControlMode.Edit, null /* additionalViewData */));
ModelMetadata mm = html.ViewData.ModelMetadata;
string s = "";
switch (mm.DataTypeName)
{
case "DateTime":
s = "<input id='{0}' class='xgFilterDate' type='text'>";
break;
case "bool":
s = "<input id='{0}' class='xgFilterDate' type='checkbox'>";
break;
case "string":
s = "<input id='{0}' class='xgFilterText' type='text'>";
break;
default:
break;
}
s = string.Format(s, mm.ModelType.Name + "_" + mm.ShortDisplayName);
return new MvcHtmlString(s);
}