【问题标题】:ASP.NET MVC - how to replace %20 with dash? [duplicate]ASP.NET MVC - 如何用破折号替换 %20? [复制]
【发布时间】:2011-01-18 05:28:00
【问题描述】:

可能重复:
How does StackOverflow generate its SEO-friendly URLs?

我制作了一个简单的表单,其中包含 NAME 和其他一些字段。
当用户提交表单时,将调用以下路由:
~/个人资料/姓名

如果用户输入 John Smith 作为 NAME,我的 URL 将是:
~/Profile/John%Smith
我希望它是:
~/个人资料/约翰-史密斯

应用程序将在页面顶部显示用户详细信息并再次显示相同的表单。
NAME 值将通过 ViewData 传递给表单。
我想用 John Smith 填充文本框,而不是 John-Smith

我该怎么做?我的想法用完了。
提前致谢!

编辑:

我在这里找到了解决方案:http://goneale.com/2008/12/19/lowercase-route-urls-in-aspnet-mvc/
它需要一点修改,但基本上就是这样。

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    如果有帮助,我使用了 Jeff Atwood 的 this 以及您在上面获得的链接来实现它。

    【讨论】:

    • 谢谢!非常优质的答案。
    【解决方案2】:

    HttpUtility,查看UrlDecode/UrlEncode

    编辑

    使用 jQuery。伪:

    <input type="text" value="name" />
    <input type="submit" id="submit" />
    

    jQuery

    $('submit').click(function() {
     $('name').val($('name').val().replace(' ', '-'));
    });
    

    它可能看起来像这样,当你想显示它时,你只需将 - 替换为空格,但请记住,有些名称包含 - 并且不应该被替换。

    【讨论】:

    • UrlEncode 不会将 %20 替换为破折号,反之则替换为 UrlDecode
    • 正确。我提到我需要它用于 ASP.NET MVC,而不是经典的 Web 表单。
    • 啊,我错过了阅读,我以为他想对 url 进行编码并对其进行解码以从“John%Smith”中获取“John Smith”。
    • @OP,即使不是 Web 表单,您仍然可以使用 HttpUtility。
    • 可以使用Route类解决问题吗?如果用户关闭了 java 脚本,此解决方案将不起作用。
    猜你喜欢
    • 2011-03-08
    • 1970-01-01
    • 2011-10-22
    • 2023-03-20
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多