表单张贴正确的值动作得到null

本文关键字:null 张贴正 表单 | 更新日期: 2023-09-27 18:15:48

好吧,我是MVC的新手,我正在努力理解这个

我有一个视图与一个表单和几个输入,所有放置与HtmlHelpers,一些从模型验证和一个动作,接受所有的输入作为参数。参数均为int、string、DateTime和decimal。

有了firebug,我可以证明所有的参数都被正确地发布了,有了action条目上的断点,我可以看到所有的参数都被正确地填充了。

除了一个这是一个必需的参数,由于某种原因,它到达控制器时带有一个空值。该参数使用@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),这是工作良好

编辑2:好的,我找到问题所在了。不显眼的验证器需要来分隔十进制值,但是由于有点,操作将其视为null。使用整数显然是可以的

我是否必须禁用对十进制值的验证或有一个工作?

表单张贴正确的值动作得到null

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

  • 模型绑定十进制值

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

我想你错过了上面的动作[HttpPost],这是post的动作。

,

[HttpPost]
public string SomeFunction(){
}

上面的函数"SomeFunction()"是表单中的post函数。

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