表单发布正确的值操作获取null

时间:2011-11-24 00:34:35

标签: c# asp.net-mvc asp.net-mvc-3

好的,我是MVC的新手,并且正在大肆了解这一点。

我有一个带有表单和几个输入的视图,所有视图都放在HtmlHelpers中,一些来自带有验证的模型和一个接受所有输入作为参数的动作。参数都是int,string,DateTime和decimal。

使用firebug,我可以证明所有参数都正确发布,并且在操作条目上有断点,我可以看到所有参数都正确填充。

之外的所有内容。 这是必需参数,由于某种原因,它以空值到达控制器。此参数使用@ Html.TextBoxFor呈现,并且在模型上具有 [Required]

我有点迷失在这里,所以感谢任何帮助

修改:动作签名:public ActionResult Create(int forn, int pro, string URLPR_LEI, decimal VLPRO_LEI, DateTime DTINI_LEI, decimal VLFRE_LEI, bool first, bool fast, bool free, bool buyback)

产生问题的文本框创建如下: @Html.TextBoxFor(model => model.VLPRO_LEI)

模特:

    [Required]
    public decimal VLPRO_LEI { get; set; }

我还有其他正确的(VLFRE_LEI)正常工作

Edit2:好的,我发现了什么问题。不显眼的验证器需要来分隔十进制值,但是由于点的原因,操作将其视为空。使用整数显然很好

我是否必须禁用小数值验证或有解决方法?

3 个答案:

答案 0 :(得分:0)

这种情况发生的一个原因是,如果模型在要更新的属性上有私有的setter

答案 1 :(得分:0)

听起来这可能是与区域设置相关的模型绑定问题,请查看此博客文章:

答案 2 :(得分:0)

我认为你错过了[HttpPost]上面的动作,这是该帖子的动作。

例如:

[HttpPost]
public string SomeFunction(){
}

上述函数“SomeFunction()”是表单中的post函数。

发布时你应该使用[HttpPost] 将ActionResult设置为View时,您应该使用[HttpGet]