我有一个ajax调用,它是:
$(document).ready(function () {
$("a").click(function (event) {
$.ajax({
url: '/',
type: 'POST',
data: JSON.stringify({ Name: 'foo', Price: 5.0 }),
contentType: 'application/json',
dataType: 'json',
success: function (data) { alert(data); }
});
event.preventDefault();
});
});
这是我的viewmodel。
public class ProductViewModel
{
[Required, StringLength(60)]
public string Name { get; set; }
[Required, Range(0, 100000)]
public decimal Price { get; set; }
}
当我发送电话时......只有'foo'填充在viewmodel P中,而不是价格。
[HttpPost]
public JsonResult Index(ProductViewModel p)
{
var rslt = "success";
return Json(rslt);
}
我正在使用
ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());
有什么想法吗?
答案 0 :(得分:0)
我在这里找到了有趣的东西http://digitalbush.com/2011/04/24/asp-net-mvc3-json-decimal-binding-woes/comment-page-1/#comment-3356。
如果你没有添加任何小数值,如下所示:
data: JSON.stringify({ Name: 'foo', Price: 5.0 })
默认绑定器将其视为整数。如果您使用5.35作为示例它将起作用。解决方案在链接中提供。您只需使用DecimalModelBinder来修复此问题的十进制值。
答案 1 :(得分:-1)
尝试使用:
[Required, Range(0.0, 100000.0)]