9

我有一个定义了标准路由的 ASP.Net MVC 应用程序。该应用程序为我们的数据库编辑元数据。网址方案是:

http://localhost/tables/Edit/[Name of Table Here]

这将调用控制器edit上的函数tables并将表的名称作为参数传入id。除了一个名为con. 以下 URL 会导致 404:

http://localhost/tables/Edit/con

我唯一能想到的是,它con必须是某种与 MVC 路由相关的保留字。有谁知道是否是这种情况以及是否还有其他保留字要避免?

4

2 回答 2

13

是的,con是保留字,因此不能放在 MVC 路由中。这是一篇描述解决方法的博客文章:

http://haacked.com/archive/2010/04/29/allowing-reserved-filenames-in-URLs.aspx

另一篇文章详细说明了保留字背后的原因:

http://bitquabit.com/post/zombie-operating-systems-and-aspnet-mvc/

于 2011-05-31T23:22:48.937 回答
4

CON 是保留字,如 COM1、COM2、COM3、COM4、LPT1、LPT2、AUX、PRN、NUL。

我在使用 ajax 请求时也遇到了这个问题。我通过将“-”字符放在参数的开头来解决,然后在代码隐藏中替换它。

但这是一个愚蠢的解决方案,您只需添加即可轻松解决此问题

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

到您的 Web.config 文件中,您可以安全地在 url 中使用这些词。

于 2014-01-24T15:54:19.120 回答