3

これが私がこれがうまくいくと思う方法です

http://stackoverflow.com/questions/12333706/how-to-bla-bla-question

コントローラーアクションとリンクがあるべきだと思います

@Html.ActionLink("how-to-bla-bla-question", "Questions", "Controller", new{questionId=12333706})
...
public ActionResult Questions(questionId)
{
    ...
}

通常、URLは

http://stackoverflow.com/questions/12333706/

これはjavascriptによって処理されますか、それともIDとタイトルを使用してURLを作成する他の方法がありますか?

4

1 に答える 1

3

私はまさにこのようにしました。

Global.asaxスニペット:

routes.MapRoute(
        "GotoPostOrPage",
        "p/{dataItemTypeId}/{dataItemId}/{ignored}", // This allows you to append a random slug if you like
        new { controller = "DataItem", action = "Details", ignored = UrlParameter.Optional }
        );

そして、コントローラーで次のようなものを作成します。

public PartialViewResult Details(int dataItemTypeId, int dataItemId)
{
    IDataItemView dataItem = _dataItemService.SelectDataItem(dataItemTypeId, dataItemId);
    DataItemViewModel vm = MappingFunctions.DataItemToViewModel(dataItem);

    return PartialView("_Details", vm);
}

これにより、stackoverflowが行うのとまったく同じランダムなスラッグを追加できることに注意してください。ただし、stackoverflowは、スラッグをデータベースに保存されているスラッグに修正します。これを実装するのは簡単です。

また、実際のコードを示したことにも注意してください。シナリオに合わせて、明らかに少し(ただしそれほどではない)微調整する必要があります。重要な点は、ルートテーブルにオプションのurlパラメータを追加することです。私の場合、私はそれを完全に無視します。これは実際にはSOが途中で行うことです。したがって、このdaft URLに移動して、ここにアクセスできます:https ://stackoverflow.com/questions/12051094/i-like-to -ケーキを食べる

于 2012-08-21T08:53:54.640 に答える