c# - MVC 3 不绑定(bind) nullable long

标签 c# asp.net-mvc-3 nullable model-binding

我创建了一个测试网站来调试我遇到的问题,看来我传递的 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)到模型:

enter image description here

所以我认为您发送值的方式有问题。您确定“TestLong”值实际上是通过网络发送的吗?您可以使用 Fiddler 进行检查.

关于c# - MVC 3 不绑定(bind) nullable long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6061291/

相关文章:

c# - 在服务器端生成的 Excel 中获取 System.Runtime.InteropServices.COMException 错误

asp.net-mvc - 如何从 Controller 中的表单集合中找到隐藏字段的值

jquery - Html.RenderPartial 不产生值

c# - 如何知道方法参数是否为可为空类型

c# - 不理解 Nullable 类型的预递减运算符行为

c# - 创建计划任务

c# - "services.AddRazorPages();"实际上添加了哪些服务?

c# - 如何计算 "remote desktop"共享的最小增量?

asp.net-mvc - 如何跨分页保留复选框: PagedList

objective-c - 我们可以确保 `+ (nonnull instancetype)sharedInstance;` 的可空性吗?