ASP.Net MVC 在Controller中修改Form表单值的问题

来源:互联网 发布:检查ip端口是否打开 编辑:程序博客网 时间:2024/06/07 15:38

问题请看这里

MVC 相关源码片段:

 string attemptedValue = (string)htmlHelper.GetModelStateValue(fullName, typeof(string)); tagBuilder.MergeAttribute("value", attemptedValue ?? ((useViewData) ? htmlHelper.EvalString(fullName, format) : valueParameter), isExplicitValue);

从这段代码中可以看到:MVC先从ModelState中获取表单字段值,在ModelState中不存在相关值的情况下才使用Controller传来的Model里的值。

微软为什么这样处理呢?

其实我也不知道,那我就大胆猜想下:

1. Form的值应该由用户提供,程序员是没权利修改的,只有在用户放弃提供值的情况下(如首次进入Edit界面),才允许Dev提供。

2. MVC在模型绑定过程中会进行数据验证,一方面:MVC得保证在数据验证失败情况下能够把错误数据显示出来(保存在ModelState中)。另一方面:Dev在Controller修改Form值是发生在数据验证成功之后,MVC不能保证Dev提供的值是否符合验证条件。

3. 原则上说表单显示的应该是用户输入的。

0 0
原创粉丝点击