gpt4 book ai didi

ASP.NET MVC3 RC2 从请求参数到方法参数的绑定(bind)错误

转载 作者:行者123 更新时间:2023-12-02 10:19:04 24 4
gpt4 key购买 nike

将值发布到 Controller 方法(其中参数之一是可为 null 的 int)时,我遇到了一个错误。重现步骤:

我创建了一个测试方法

[HttpPost]
public ActionResult PostTest(string from, int? number, bool? formsearch)
{
return new ContentResult { Content = string.Format("{0}/{1}/{2}", from, number, formsearch) };
}

使用jquery,我创建一个Post请求

$.post("http://localhost/mysite/test/posttest",{ from:"1//1/2009",number:"156",formsearch:true});

请求(例如在fiddler中)清楚地显示正在发送的值:

来自:1//1/2009数量:156表单搜索:true

但该函数返回的结果是:

1//1/2009//正确

如果我改变int? number 转 int number,结果正确:

1//1/2009/156/正确

在 MVC3 RC1 中,这可以正常工作,并且可空 int 没有任何问题

更新:我似乎没有遇到新创建的 MVC3 网站的问题。我的项目中可能有哪些内容会影响模型与可为空整数的绑定(bind)?为什么 RC1 和 RC2 之间会有差异?有人对调试此模型绑定(bind)问题有建议吗?

最佳答案

这是 MVC 3 RC2 版本中的一个已知错误。 ScottGu said:

we have seen a few reports of a metadata caching bug that manifests itself in at least two scenarios:

  • Nullable parameters in action methods have problems: When you have a controller action method with a nullable parameter (like int? – or a complex type that has a nullable sub-property), the nullable parameter might always end up being null - even when the request contains a valid value for the parameter.

我链接的博客文章包含一个解决方法:向您的 Application_Start 添加一行:

// Workaround to fix RC2 bug with Metadata caching
ModelMetadataProviders.Current = new DataAnnotationsModelMetadataProvider();

但实际上您应该更新到 RTM。如果 RC2 的上线许可证在 RTM 版本发布后仍然存在,我会感到非常惊讶。

关于ASP.NET MVC3 RC2 从请求参数到方法参数的绑定(bind)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9516652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com