ASP.NET MVC - 如何用破折号替换 %20? [复制]
Posted
技术标签:
【中文标题】ASP.NET MVC - 如何用破折号替换 %20? [复制]【英文标题】:ASP.NET MVC - how to replace %20 with dash? [duplicate] 【发布时间】:2011-01-18 05:28:00 【问题描述】:可能重复:How does *** 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/。 它需要一点修改,但基本上就是这样。
【问题讨论】:
【参考方案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 脚本,此解决方案将不起作用。以上是关于ASP.NET MVC - 如何用破折号替换 %20? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET MVC 中的 HTML-5 data-* 属性中使用破折号
SEO:带有和不带有破折号“/”和 ASP.NET MVC 的重复 URL
Asp.Net Routing - 用生成的 URL 中的破折号替换空格 %20 [重复]