0

2つのデータベース値をURLにバインドしようとすると問題が発生します。global.asaxファイルは次のように正しいです。

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}/{stitle}", // URL with parameters
            new { controller = "article", action = "Index", id = UrlParameter.Optional, stitle= UrlParameter.Optional} // Parameter defaults

        );

私が抱えている問題は、何らかの理由でコントローラーにあります。ここで返す2番目の値を取得できません。コントローラーコードです。

public ActionResult Detail(int id,string stitle)
    {

        Article article = db.Articles.Find(id);  
      stitle = (from s in db.Articles where id == s.ArticleID select s.stitle).FirstOrDefault();

        return View(article);
    }

stitleはデータベースからの文字列値であるため、 stitleを返すか、記事に含めることができる方法はありますか。

4

1 に答える 1

0

オプションにできるのは、ルートの最後のパラメーターのみです。したがって、あなたの場合、idパラメーターはオプションではなくなります。

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}/{stitle}",
    new { controller = "article", action = "Index", stitle = UrlParameter.Optional }
);

次に、このアクションへの適切なリンクを生成していることを確認してください。

@Html.ActionLink("click me", "index", "article", new { id = "123", stitle = "some-title" }, null)

生成された URL は次のようになります。

href="/article/index/123/some-title"
于 2012-08-28T16:24:07.673 に答える