asp.net – C#可选对象操作MVC参数
发布时间:2020-12-16 06:46:22 所属栏目:asp.Net 来源:网络整理
导读:是否可以在某种程度上使用默认值将对象指定为MVC中的参数? 例如. public virtual ViewResult Index(RequirementFilters requirementFilters) 我想在RequirementFilters上初始化几个参数的值? 目前我在做 public virtual ViewResult Index(int status=1,boo
是否可以在某种程度上使用默认值将对象指定为MVC中的参数?
例如. public virtual ViewResult Index(RequirementFilters requirementFilters) 我想在RequirementFilters上初始化几个参数的值? 目前我在做 public virtual ViewResult Index(int status=1,bool required =false) 我想创建一个Filter对象,以便我可以重用它,但我无法弄清楚在Action Parameters中为对象设置默认值的方法. 谢谢 格雷姆 解决方法
您可以创建自定义ActionFilter属性并在那里创建Filter对象的实例.您可以通过自定义属性提供一些属性.
这是一个例子: public class DefaultQuerySettingsAttribute : ActionFilterAttribute { public string ParameterName { get; set; } public Type SettingsType { get; set; } public int Rows { get; set; } public string SortColumn { get; set; } public string SortOrder { get; set; } public bool PagingEnabled { get; set; } public DefaultQuerySettingsAttribute() { this.ParameterName = "settings"; var defaultSettings = new QuerySettings(); this.Rows = defaultSettings.Rows; this.SortColumn = defaultSettings.SortColumn; this.SortOrder = defaultSettings.SortOrder; this.PagingEnabled = defaultSettings.PagingEnabled; } public override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); if (filterContext.ActionParameters.ContainsKey(this.ParameterName)) { var querySettings = filterContext.ActionParameters[this.ParameterName] as QuerySettings; if (querySettings == null || string.IsNullOrWhiteSpace(querySettings.SortColumn)) filterContext.ActionParameters[this.ParameterName] = this.GetQuerySettings(); } } private QuerySettings GetQuerySettings() { var querySettings = (QuerySettings)Activator.CreateInstance(SettingsType ?? typeof(QuerySettings)); querySettings.Rows = Rows; querySettings.SortColumn = SortColumn; querySettings.SortOrder = SortOrder; querySettings.PagingEnabled = PagingEnabled; return querySettings; } } ParameterName是action方法中的参数名称(在您的情况下为requirementFilters).您还可以通过提供SettingsType来指定将实例化的实际类型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 在ASP.NET MVC中在HTTP和HTTPS之间移动
- swagger – Swashbuckle ASP.NET Core使用application / x-
- asp.net – 任何框架依赖于IIdentity.AuthenticationType?
- asp.net-mvc – MVC 3保持短网址
- asp.net-mvc-3 – asp.net mvc的telerik grid的开源替代品?
- 将azure AD身份验证与asp.net核心身份个人帐户集成
- asp.net – 使用jQuery显示ashx图像?
- 如果DataSource不包含任何项目,如何在ASP.NET C#中隐藏转发
- asp.net – File.Exists从网络共享返回false
- asp.net – 操作无法完成. FORMATETC结构无效
推荐文章
站长推荐
- asp.net – 检查ASPX文件以确保资源键在RESX中引
- asp.net-mvc – 为什么应该使用HTTP POST或DELET
- 谈谈基于SQL Server 的Exception Handlingp[下篇
- ASP.net HTTP 404 – 找不到文件而不是MaxReques
- asp.net-mvc-2 – 使用.Net Framework 4.0的Shar
- ASP.NET MVC – 将XHTML添加到验证错误消息中
- ASP.NET应用程序未记录到Windows事件日志
- asp.net-mvc – 为id而不是name设置HtmlFieldPre
- 开源音乐下载神器XMusicDownloader更新,支持歌单
- .net – 将HtmlTextWriter的内容转换为字符串
热点阅读