MVC4项目 - 参数值中不能有点?

时间:2012-12-16 19:34:52

标签: asp.net asp.net-mvc-4

我有一个MVC4项目,我正在尝试使用像/ QRCode / address / amount这样的URL。以下是它的声明方式:

路线:

routes.MapRoute(
    name: "QRCode",
    url: "QRCode/{address}/{amount}",
    defaults: new { controller = "QRCode", action = "Index" }
);

控制器:

public class QRCodeController : Controller
{
    public ActionResult Index(string address, double amount)
    {
         ...

问题是:

当网址为:QRCode/address1/33时,一切正常,但如果第二个参数中有一个点,例如:QRCode/address1/33.33,我会收到“HTTP错误404.0 - 未找到”。< / p>

重新声明第二个参数,字符串产生相同的结果。

使用%2E代替点会产生相同的结果

有人知道这里发生了什么吗?我知道它在MVC3中运行良好

3 个答案:

答案 0 :(得分:7)

如果这是在IIS 7上,那么将其添加到您的配置文件中它应该可以正常工作:

<system.web>
     <httpRuntime relaxedUrlToFileSystemMapping="true" />
</system.web>

答案 1 :(得分:6)

是的......看到评论,处理程序映射是一个问题。

我将URL从QRCode / address1 / 33.33更改为QRCode / address1 / 33.33 /并且映射工作正常

答案 2 :(得分:0)

以下是另一种选择:不要映射金额,但将其作为带有名称的网址参数传递:

routes.MapRoute(
    name: "QRCode",
    url: "QRCode/{address}",
    defaults: new { controller = "QRCode", action = "Index" }
);

现在用这样的网址调用api:

http://<server>/QRCode/address1?amount=33.33