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? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何用 <br/> 替换某些回车换行符后跟破折号?

如何在 ASP.NET MVC 中的 HTML-5 data-* 属性中使用破折号

SEO:带有和不带有破折号“/”和 ASP.NET MVC 的重复 URL

Asp.Net Routing - 用生成的 URL 中的破折号替换空格 %20 [重复]

在asp.net(C#) MVC中如何用htmlhelper 图片链接到另一个页面 !

如何用FineUI控件替代ASP.NET控件。界面布局都已写好,如何替换原有控件