好的,我是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:好的,我发现了什么问题。不显眼的验证器需要。来分隔十进制值,但是由于点的原因,操作将其视为空。使用整数显然很好
我是否必须禁用小数值验证或有解决方法?
答案 0 :(得分:0)
这种情况发生的一个原因是,如果模型在要更新的属性上有私有的setter
答案 1 :(得分:0)
听起来这可能是与区域设置相关的模型绑定问题,请查看此博客文章:
答案 2 :(得分:0)
我认为你错过了[HttpPost]上面的动作,这是该帖子的动作。
例如:
[HttpPost]
public string SomeFunction(){
}
上述函数“SomeFunction()”是表单中的post函数。
发布时你应该使用[HttpPost] 将ActionResult设置为View时,您应该使用[HttpGet]