当前位置: 移动技术网 > IT编程>开发语言>.net > 如何将ASP.NET MVC所有参数均自动设置为默认

如何将ASP.NET MVC所有参数均自动设置为默认

2018年09月19日  | 移动技术网IT编程  | 我要评论

soaye,北京青年全集下载,飞花溅玉录txt下载

今天看到csdn上有个问题觉得有点意思:"可不可以asp.net mvc所有参数均自动设置为默认"

 

复制代码

public class homecontroller : controller

{

    public actionresult index(int para1,string para2,int para3,bool para4)

    {

        return view();

    }

}

复制代码

如果不配置路由,直接访问localhost会报错,因为其中一些参数没有赋值

 

<span><h1>“/”应用程序中的服务器错误。<hr color="silver" size="1" width="100%"></h1>

<h2> <i>对于“mapplication1.controllers.homecontroller”中方法“system.web.mvc.actionresult index(int32, system.string, int32, boolean)”的不可以为 null 的类型“system.int32”的参数“para1”,参数字典包含一个 null 项。可选参数必须为引用类型、可以为 null 的类型或声明为可选参数。<br>参数名: parameters</i> </h2></span>

 

 

从这个错误其实可以看出mvc已经找到了对应的action,这时我们只需要在调用前做些处理,为参数赋默认值就行了。

 

这时就可以用到onactionexecuting 方法 https://msdn.microsoft.com/zh-cn/library/system.web.mvc.controller.onactionexecuting%28v=vs.118%29.x

 

复制代码

public class homecontroller : controller

    {

        protected override void onactionexecuting(actionexecutingcontext filtercontext)

        {

            var methodinfo = ((reflectedactiondescriptor) filtercontext.actiondescriptor).methodinfo;

            foreach (var p in methodinfo.getparameters())

            {

                if (p.parametertype.isvaluetype)

                {

                    filtercontext.actionparameters[p.name] = activator.createinstance(p.parametertype);

                }

            }

        }

 

        public actionresult index(int para1, string para2, int para3, bool para4)

        {

            debug.print("para1:{0} para2:{1} para3:{2} para4 :{3}",para1, para2,  para3, para4);

            return view();

        }

    }

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网