URL路由配置无法处理url中的句点

时间:2014-03-10 11:14:51

标签: c# asp.net routes asp.net-mvc-5

我创建了一个mvc控制器,它链接到使用ADO.NET向导创建的模型文件。 id列没有填充一些正常值,如整数甚至GUID,但是可以有句点的字符串。自动生成的编辑功能被搞砸了,因为路由引擎将id中的字符作为配置并抛出异常:

The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

编辑操作格式为:

// GET: .../Edit/5
public ActionResult Edit(string id)
{
//my code
}

当url不包含任何规范字符(即:/Edit/2982-4-112A)时,一切都运行得非常好,但是当它包含句点(即:/Edit/125-2-10.5)时,异常就会出现。

我尝试添加web.config

<httpRuntime relaxedUrlToFileSystemMapping="true" />

没有解决问题。

如何解决这个问题?

我觉得我可以拦截参数并将点交换为其他内容,直到它到达方法,此时我还原了更改。不过不知道怎么做。

1 个答案:

答案 0 :(得分:0)

目前我的解决方案是:

在需要生成链接的位置我执行String.Replace('.','|'),然后在调用操作后再次String.Replace('|','.')

仍然认为有更好的方法。