为了账号安全,请及时绑定邮箱和手机立即绑定

如何实现类似于SO的url重写

如何实现类似于SO的url重写

慕莱坞森 2019-11-02 10:48:17
我需要在asp.net MVC网站上实现类似SO的功能。例如,当用户转到https://stackoverflow.com/questions/xxxxxxxx加载后,主题行与url串联在一起,并且url变得像这样https://stackoverflow.com/questions/xxxxxxxx/rails-sql-search-through-has-one-relationship在“ / rails-sql-search-through-has-one-relationship”部分上方已添加到url。在网络表单中,这很简单,我可以只使用URL重写。但不确定如何在MVC中完成此操作以下行来自Global.asax文件        routes.MapRoute(            "Default", // Route name            "{controller}/{action}/{id}", // URL with parameters            new { controller = "Account", action = "LogOn", id = UrlParameter.Optional } // Parameter defaults        );我需要连接的字符串在我的数据库中,因此可以从那里获取。我该怎么做?
查看完整描述

3 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

这称为“条状路线”。实现此目的的一种方法是使用可选slug参数定义路由,并在控制器方法中检查是否已提供参数


routes.MapRoute(

    name: "Question",

    url: "Question/{id}/{slug}",

    defaults: new { controller = "Question", action = "Details", slug = UrlParameter.Optional }

);

然后输入QuestionController(假设将始终提供ID)


public ActionResult Details (int id, string slug)

{

    if (string.IsNullOrEmpty(slug))

    {

        // Look up the slug in the database based on the id, but for testing

        slug = "this-is-a-slug";

        return RedirectToAction("Details", new { id = id, slug = slug });

    }

    var model = db.Questions.Find(id);

    return View(model);

}


查看完整回答
反对 回复 2019-11-02
?
jeck猫

TA贡献1909条经验 获得超7个赞

我返回的是view()而不是view(model)。如果我使用view(model),则会引发“找不到视图'fawad'或其主视图,或者没有视图引擎支持搜索到的位置。搜索了以下位置:

查看完整回答
反对 回复 2019-11-02
  • 3 回答
  • 0 关注
  • 366 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信