__PRE__
工作得很好,但我发现了一些失败的案例:
gen_slug('Andrés Cortez')返回andres-cortez而不是gen_slug('Andrés Cortez')
为什么?关于andres-cortez参数的任何想法?
所以我搜索并浏览了SO上的slug标签,发现了两个引人注目的解决方案:
这只是部分解决问题的方法.我可以自己手动编写代码,但我很惊讶还没有解决方案.
那么,在C#和/或.NET中是否有一个slugify alrogithm实现正确解决了拉丁字符,unicode和其他各种语言问题?
如果缺少部分URL,如何将ASP.NET MVC中的请求重定向到其正确的规范版本?
使用Stack Overflow作为示例,站点将问题标题添加到其路径的末尾,但使用路径中的问题ID来实际查找问题.如果省略标题,您将被重定向到正确的URL.
例如,访问URL:
stackoverflow.com/questions/9033
Run Code Online (Sandbox Code Playgroud)
将重定向到
stackoverflow.com/questions/9033/hidden-features-of-c
Run Code Online (Sandbox Code Playgroud)
这是如何运作的?
如何在C#中生成友好URL?目前我简单地用下划线替换空格,但是我如何生成像Stack Overflow这样的URL呢?
例如,我如何转换:
如何在C#中生成友好URL?
成
怎么办 - 我 - 产生 - 一个友好的URL,在-C
拿一个如下的字符串:
在C#中:如何在逗号分隔的字符串列表中围绕字符串添加"引号"?
并将其转换为:
在-C-怎么办,我加引号围绕头字符串IN-A-逗号分隔的列表的串
要求:
ToSeoFriendly("hello world hello world", 14)return"hello-world"另请注意,是否应该有最小长度?
我有以下字符串
áéíóú
Run Code Online (Sandbox Code Playgroud)
我需要将其转换为
aeiou
Run Code Online (Sandbox Code Playgroud)
我怎样才能实现它?(我不需要比较,我需要新的字符串来保存)
不重复如何从.NET中的字符串中删除变音符号(重音符号)?.那里接受的答案没有解释任何事情,这就是为什么我"重新开启"它.
如果我导航到以下stackoverflow URL,http://stackoverflow.com/questions/15532493它会自动附加问题的标题,如下所示:
http://stackoverflow.com/questions/15532493/mvc-custom-route-gives-404
也就是说,我可以在没有问题标题的情况下在我的浏览器中输入URL,并自动附加.
我如何在我的应用程序中实现相同的结果?(注意:我知道问题标题不会影响呈现的页面).
我有一个调用控制器,调用Users一个动作方法Details.我定义了以下路线:
routes.MapRoute("UserRoute",
"Users/{*domain}",
new { controller = "User", action = "Details" },
new { action = "^Details$" });
Run Code Online (Sandbox Code Playgroud)
由于这是一个Intranet应用程序,因此用户将根据其Windows帐户进行身份验证.我想将域名和用户名附加到URL.
如果我在视图中生成URL,如下所示:
@Html.ActionLink("Model.UserName", "Details", "User", new { domain = Model.Identity.Replace("\\", "/") })
Run Code Online (Sandbox Code Playgroud)
我得到一个如下所示的网址:
域/用户/ ACME/JSMITH
但是,如果用户Domain/Users/使用浏览器导航栏导航到URL ,则它与路径匹配,用户将进入用户详细信息页面.ACME/jsmith/在这种情况下,我想将其附加到URL上.
到目前为止我所做的研究表明我可能必须通过派生RouteBase和实现GetRouteData和GetVirtualPath方法来实现自定义路由对象,但我不知道从哪里开始(msdn documentaiton非常薄).
所以我想知道的是:
我正在使用VS10及其asp.net开发服务器开发一个ASP.NET MVC 3博客应用程序,今天我遇到了"HTTP错误400 - 错误请求"错误,当我在带有这些字符的slug的博客帖子上请求时"不含25%2%2580%2599t".
我认为URL中允许使用"%"字符,例如,在StackOverflow上你有/sf/ask/tagged/c/%23,这个链接显示了用c#标记的所有问题.那么我的URL有什么区别,你如何修复它?谁能解释一下
非常感谢!
我理解为什么会这样,但我需要一个解决方法.我在StackOverflow上查看了一些其他问题,但没有一个是有用的.我不想在整个网站上禁用输入验证,因为这绝对是危险的.我只有一个(至少现在)我需要禁用输入验证的地方.
我用[ValidateInput(false)]属性修饰了Action方法,我用Html.Encode对字符串进行编码.但是,我仍然得到同样的错误.这是我的观点:
<div id="sharwe-categories">
<ul class="menu menu-vertical menu-accordion">
@foreach(var topLevel in Model)
{
var topLevelName = Html.Encode(topLevel.Name);
<li class="topLevel">
<h3>
@Html.ActionLink(topLevel.Name, "Index", "Item", new { category = topLevelName }, new {@class = "main"} )
<a href="#" class="drop-down"></a>
</h3>
<ul>
@foreach (var childCategory in topLevel.Children)
{
var childcategoryName = Html.Encode(childCategory.Name);
<li>@Html.ActionLink(childCategory.Name, "Index", "Item", new RouteValueDictionary { { "category", topLevelName }, { "subcategory", childcategoryName } }, null)</li>
}
</ul>
</li>
}
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
如您所见,没有用户输入.但是一些类别名称中有一些"危险"字符......任何解决方案?
创建一些在Razor中将字符串转换为友好字符串的东西(我正在使用C#/ MVC4)
我有以下代码:
<li>
<img
src="~/Images/Products/@Model["CategoryName"]/@Model["ProductThumbnailUrl"]"
/>
</li>
Run Code Online (Sandbox Code Playgroud)
我的类别的名称是:CDs, DVDs and Bluray我希望连接为"友好字符串",就像cds-dvds-and-blurays使用这样的东西:
<li>
<img
src="~/Images/Products
/@HtmlHelper.ConvertToFriendlyString(@Model["CategoryName"])
/@Model["ProductThumbnailUrl"]"
/>
</li>
Run Code Online (Sandbox Code Playgroud)
你们都明白了吗?
那么,有人有任何想法吗?
提前致谢.
c# ×5
slug ×3
razor ×2
url ×2
.net ×1
asp.net-mvc ×1
bad-request ×1
friendly-url ×1
php ×1
routes ×1
security ×1
seo ×1
string ×1
validation ×1