记录mvc model为null bug

简言之:页面model跟后台model同名  mvc解析错误  后台model无法识别  改名即可

 

1、问题现象

  POST提交时,控制的Action接收到的参数为null,但Request.Form、Request.Params等集合其实是包含提交的所有数据的。如下截图:

  记录mvc model为null bug_第1张图片

 

2、该问题很诡异,重新创建视图、控制器,问题仍然存在;

3、确定控制器肯定是没有问题后,决定首先将视图中的内容清空,发现可以正常接受到参数;

4、每次增加一个HTML元素,加到Model时,发现接收不到参数;

5、确定问题:当Action中的参数名称与提交的数据KEY有相同时(不区分大小写),会导致Action接收不到参数,只能得到null,估计是MVC在分析参数时的BUG。

6、视图代码

  此视图中包括Id、Field1、Name、Model4个表单数据,那么Action的参数名称为此4个中的任何一个时(不区分大小写),都会导致接收到的参数为null。

复制代码

@model WebMvc1.Models.ProductInfo

@{
    Layout = null;
}





    
    Create


    
    
    


    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()

        

ProductInfo


@Html.ValidationSummary(true, "", new { @class = "text-danger" })
}
@Html.ActionLink("Back to List", "Index")

复制代码

运行时视图效果如下:

记录mvc model为null bug_第2张图片

7、控制器代码,参数名称为model,与视图中提交的数据有相同名称(Model)。

        [HttpPost]
        public ActionResult Create(ProductInfo model)
        {
            return View(model);
        }

8、将Action中的参数名称改为不与Form中的数据相同的其他名称时,问题解决。如下图:

记录mvc model为null bug_第3张图片

 

8、哪位大神如果有时间,可以跟踪一下MVC的源码,确定该问题的真正原因。

9、MVC4、MVC5都有此问题出现。

 

转自:https://www.cnblogs.com/sdfkfkd/p/Mvc_Controller_Parameter_Null.html

你可能感兴趣的:(记录mvc model为null bug)