今天看到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>对于“MvcApplication1.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 方法 http://msdn.microsoft.com/zh-cn/library/system.web.mvc.controller.onactionexecuting%28v=vs.118%29.aspx

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();
}
}

成功!

最新文章

  1. 取消vs2013在solution中单击打开文件的功能
  2. (document).height()、$(document).scrollTop()
  3. Tigase数据库结构(1)
  4. BZOJ1036[ZJOI2008]树的统计Count 题解
  5. 第九天 内容提供者 ContentResolver
  6. 点(Dot)与像素(Pixel)的区别
  7. [未完成]关于SQL语句的总结
  8. C++ sizeof操作符的用法和strlen函数的区别
  9. easyUI属性总结
  10. C#同步,异步的理解,包括5.0中await和async(学习笔记)
  11. es6基础系列一:let和const
  12. 使用SVN提交代码,快速简单的换地址方法
  13. CentOS6.5在虚拟机中安装
  14. poj3278 【BFS】
  15. Bootstrap3基础 pagination 分页按钮 简单示例
  16. 带你走进Android Afinal框架的世界
  17. P2280 [HNOI2003]激光炸弹
  18. N个苹果分给M个人,有多少种分法
  19. PHPStorm 10 激活
  20. MyBatis和Hibernate相比较

热门文章

  1. Python&gt;&gt;&gt;Flask框架使用之入门
  2. Java 使用线程方式Thread和Runnable,以及Thread与Runnable的区别
  3. web异常流量定位:iftop+tcpdump+wireshark
  4. 在CentOS上安装并运行SparkR
  5. [2014.01.27]wfImage 图像处理组件 3.3
  6. 分享一个绿色版本 sql server 查询器,
  7. WebService 错误:无法加载协定为xxx的终结点配置部分,因为找到了该协定的多个终结点配置
  8. Configure PPPoE on CentOS7
  9. JVM--标记-清除算法Mark-Sweep
  10. [Mongodb] Tarball二进制包安装过程