我创建了一个测试网站来调试我遇到的问题,看来我传递的 JSON 数据有误,或者 MVC 无法绑定(bind)可为 null 的 long。当然,我使用的是最新的 MVC 3 版本。
public class GetDataModel
{
public string TestString { get; set; }
public long? TestLong { get; set; }
public int? TestInt { get; set; }
}
[HttpPost]
public ActionResult GetData(GetDataModel model)
{
// Do stuff
}
我正在发布一个具有正确 JSON 内容类型的 JSON 字符串:
{ "TestString":"test", "TestLong":12345, "TestInt":123 }
long 没有绑定(bind),它始终为 null。如果我将值放在引号中,它会起作用,但我不应该这样做,不是吗?我是否需要为该值创建一个自定义模型 Binder ?
最佳答案
我创建了一个测试项目来测试这个。我将您的代码放入我的 HomeController 并将其添加到 index.cshtml:
<script type="text/javascript">
$(function () {
$.post('Home/GetData', { "TestString": "test", "TestLong": 12345, "TestInt": 123 });
});
</script>
我在 GetData 方法中放置了一个断点,并将值按照应有的方式绑定(bind)到模型:
所以我认为您发送值的方式有问题。您确定“TestLong”值实际上是通过网络发送的吗?您可以使用 Fiddler 进行检查.
关于c# - MVC 3 不绑定(bind) nullable long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6061291/