【问题标题】:pass decimal to controller mvc4将十进制传递给控制器​​ mvc4
【发布时间】:2019-05-03 18:35:00
【问题描述】:

我的控制器操作之一出现问题。
我的视图中存储了一个小数点。并且我试图将这个通过和 actionlink 传递给我的控制器方法。

ViewBag.Interest =1.25 


@Html.ActionLink("Export", "ExportInterest", "Export", new {id = ViewBag.Interest}, null). 

我的控制器方法看起来像这样:

public ActionResult ExportInterest(decimal? id)

{

return View();

}  

我可以看到 1.25 是通过查询字符串传递的,但是在路由时我得到一个 404 文件未找到。注意:如果我将它更改为没有小数点的整数,它工作正常。这是编码错误吗?它不识别小数点,也许我需要转义它?我应该使用 htmlhelper 吗?最初我认为这可能是本地化问题,但我在 web.config 中设置了我的全球化文化。我显然在这里做一些愚蠢的事情......任何帮助将不胜感激......

更新:我还尝试在操作链接中将我的 viewbag 转换为可为空的小数,但这没有任何效果

【问题讨论】:

  • 您创建了视图吗?为什么要从 Viewbag 传递一个值?
  • 作为字符串传递,然后进行强制转换
  • 我确实有意见。如上所述,actionlink 和 viewbag 被填充到视图中。 viewbag 被填充在页面获取中,但为了本地化错误,我现在只是将它填充到视图中的 viewbag 中,只是为了看看为什么小数点没有正确路由..
  • 谢谢我,我刚刚尝试将它作为字符串传递,并更改了我的控制器方法以期望一个字符串,但结果还是一样。这绝对是路由中带有小数点的问题。这是路由问题还是 iis 问题?我在iis7顺便说一句。但也曾在 iisexpress 中尝试过

标签: asp.net-mvc-4 razor


【解决方案1】:

我的猜测与视图包中的数据类型有关。

我之前已经将小数传递给控制器​​,所以我知道它可以做到。但是,如果您将链接更改为:

@Html.ActionLink("Export", "ExportInterest", "Export", new {id =1.25}, null).

有效吗?

【讨论】:

  • 感谢您的帮助 taylonr,但我已经尝试过,结果相同。这就是为什么我开始认为这是一种文化问题
【解决方案2】:

试试看:

decimal? d = (decimal?)ViewBag.Interest;

@Html.ActionLink("Export", "ExportInterest", "Export", new {id = d}, null)

@Html.ActionLink("Export", "ExportInterest", "Export", new {id = (decimal?)ViewBag.Interest}, null)

【讨论】:

  • 您好,lukasz,感谢您的帮助。我已经尝试过没有结果的十进制转换。至于将它传递给十进制变量,我不能在我看来可以这样做吗?无论如何,它与十进制转换的结果相同,但不起作用
  • 确定可以在 View @{ decimal 中分配变量吗? d =(十进制?)ViewBag.Interest; }
  • 感谢您提供方便的 lukasz。我试过这个,但我得到了与直接转换为十进制相同的结果? IE。结果没有变化。
  • 看这里,我认为这和你的问题很像:stackoverflow.com/questions/5698984/…
  • 谢谢lukasz 我去看看
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
  • 1970-01-01
相关资源
最近更新 更多