MVC 3路由绑定问题

时间:2012-08-28 16:21:37

标签: asp.net-mvc-3

我在尝试将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

        );

我遇到的问题是我的控制器由于某种原因我无法获得第二个值返回此处是我的控制器代码

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 或将其包含在文章中,因为标题是数据库中的字符串值。

1 个答案:

答案 0 :(得分: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)

,生成的网址应如下所示:

href="/article/index/123/some-title"