0

次のようなURLを開発したいと思います。

http://mysite.com/products/1/best-product-in-the-world

適切なレコードを取得するために必要なのは、次のルートだけです。

http://mysite.com/products/1

製品の説明をURL( "best-product-in-the-world")に追加すると、URLエンコードの問題が発生します。ActionLink(...)でURLのこの部分を作成するときに、Server.UrlEncodeを使用しようとしました。

<%= Html.ActionLink(item.Subject, "../Post/Detail", 
    new { id = item.ID, 
          descriptiveUrl = Server.UrlEncode(Product.ShortDescription) }, 
    new { rel = "canonical", 
          title = Product.ShortDescription, 
          @class = "product-hyperlink" })%>

ただし、これにより、次のように、特殊文字とスペース用に定期的にエンコードされた要素がレンダリングされます。

http://localhost:2392/Products/Detail/1/best+product+in+the+world253f

...これは400の不正なリクエスト例外を作成します。私が質問の正義を行ったかどうかはわかりませんが、必要に応じてさらに明確にすることができます。

更新:この投稿のURLは次のとおりです、そして私は非常に似たようなことをしようとしています!

http://stackoverflow.com/questions/1148955/creating-search-engine-friendly-urls-in-asp-net-mvc
4

3 に答える 3

3

Google でさらに詳しく検索すると、スラッグを生成するための次のリンクが見つかりました。

http://www.intrepidstudios.com/blog/2009/2/10/function-to-generate-a-url-friendly-string.aspx

この答えを見つけるために本当に必要な用語を教えてくれた @Rob と @Coding the Wheel に感謝します。

于 2009-07-19T00:48:32.910 に答える
2

簡単なオプションは、適切なフィールド(この場合は簡単な説明)を適切な「スラッグ」に正規化するアクセサーを使用して、モデルオブジェクトにプロパティを追加することです。つまり、識別子の後のジャンクテキストのビットです。次に、URIを作成するときにこれを使用します。

正規化プロセスは、英数字以外の文字を削除し、スペースをハイフンに置き換えるのと同じくらい簡単な場合があります。

于 2009-07-19T00:39:25.763 に答える
1

ここでの標準的な方法は、投稿の外向きのURLとして機能する各投稿に「スラッグ」を保存することです。たとえば、上記の投稿のスラッグは次のようになります。

best-product-in-the-world

まともなCMSはこれを自動的に行い、保存する前にスラッグを微調整できるようにします。

于 2009-07-19T00:41:07.947 に答える