Asp.net

ASP.NET MVC 搜尋引擎優化 URL

  • February 5, 2010

我的目標是讓 url 路由如下:

http://www.abc.com/this-is-peter-page

http://www.abc.com/this-is-john-page

在上面的 url 中不放置控制器名稱和函式名稱的情況下,實現此目的的最簡單方法是什麼?如果找不到上面的頁面,我應該重定向到 404 頁面。

外掛 1:this-is-peter-page 和 this-is-john-page 不是靜態內容,而是來自數據庫。

與 KingNestor 的實現類似,您還可以執行以下操作以簡化您的工作:

1)寫你的模型

public class MyUser{public String UserName{get; set;}}

2)添加路由到全域asax

routes.MapRoute(
  "NameRouting",
  "{name}",
  new { controller = "PersonalPage", action = "Index", username="name" });

3)滾動您自己的從 IModelBinder 派生的自定義模型綁定器

public class CustomBinder : IModelBinder
   {
      public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
      {
         var request = controllerContext.HttpContext.Request;
         var username = getUserNameFromDashedString(request["username"]);
         MyUser user = new MyUser(username);

         return user;
      }
   }
  1. 在你的行動中:
public ActionResult Index([ModelBinder(typeof(CustomBinder))] MyUser usr)
{
   ViewData["Welcome"] = "Viewing " + usr.Username;
   return View();
}

引用自:https://stackoverflow.com/questions/1072746