我最近在使用 MVC,在尝试使用 ajax 向我的 Controller 发送请求时遇到了一个奇怪的问题。我正在使用 MVC 直接附带的 JQuery(版本 1.3.2),我正在尝试发送这样的 ajax 请求:
$.post("Home/OpenTrade", { price: 1.5 }, function() { }, "json");
我还尝试了 parseFloat("1.5") 而不是 1.5。
当我尝试使用
[AcceptVerbs( HttpVerbs.Post)]
public void OpenTrade(float? price)
我的价格始终为空。如果我省略 ? 则根本不会调用 Controller (这不足为奇),我尝试使用 decimal 以及 double 类型.此外,此函数在我发送整数数据时起作用(如果我发送 1 将调用此 Controller ,并且 float?price 已正确填充)。我是否遗漏了什么,或者这是一个错误?
广告。我可以接收字符串形式的价格,然后手动解析它,但我不喜欢这个解决方案,因为它不够优雅,而且它违背了使用像 MVC 这样的框架为我做这件事的全部目的。
编辑和回答:根据 Joel 的建议,我创建了一个模型 Binder ,我将发布它,也许有人会使用它:
class DoubleModelBinder : IModelBinder
{
#region IModelBinder Members
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
string numStr = bindingContext.ValueProvider[bindingContext.ModelName].AttemptedValue;
double res;
if (!double.TryParse(numStr, System.Globalization.NumberStyles.Number, System.Globalization.CultureInfo.InvariantCulture, out res))
{
if (bindingContext.ModelType == typeof(double?))
return null;
throw new ArgumentException();
}
if (bindingContext.ModelType == typeof(double?))
return new Nullable<double>(res);
else
return res;
}
#endregion
}
可能注册成double和double?粘合剂,双?如果无法解析值,它会将 null 传递给 Controller 。
顺便说一句。知道为什么 float 和 double 不能开箱即用(对我来说?)吗?
Edit2 和解决方案: 好的,这会很有趣 :)。它对我不起作用,因为请求的字符串正在发送 1.5432 (示例值),这完全没问题,但是...... MVC 试图使用我的文化设置在内部解码它,这是期望数字的格式为 1,5432,因此转换已无提示地失败。
因此,请记住:如果您生活在陌生的国家/地区,请仔细检查您的文化设置。
最佳答案
制作一个 float 模型 Binder 。这可以从表单集合中提取适当的值,解析它,并将它作为参数返回
关于c# - JQuery + Asp.Net MVC,传递 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1285819/
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
如何在ruby中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送
我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha
我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use
我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些
如何在Ruby中按名称传递函数?(我使用Ruby才几个小时,所以我还在想办法。)nums=[1,2,3,4]#Thisworks,butismoreverbosethanI'dlikenums.eachdo|i|putsiend#InJS,Icouldjustdosomethinglike:#nums.forEach(console.log)#InF#,itwouldbesomethinglike:#List.iternums(printf"%A")#InRuby,IwishIcoulddosomethinglike:nums.eachputs在Ruby中能不能做到类似的简洁?我可以只
如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我