MVC3中的自定义路由

时间:2012-12-05 15:02:54

标签: c# asp.net-mvc-3 asp.net-mvc-4

  

可能重复:
  Url routing with database lookup?

我希望构建一个CMS,这意味着用户可以向系统添加页面,这将在富文本编辑器中输入URL,然后将内容作为HTML。

MVC3路由将如何处理此问题?据我所知,Controller/Action方法点击一个操作并返回View(),但是如果此URL Controller/Action存在于数据库中并指向数据库中的内容

基本上我需要系统检查路由是否存在,如果没有从数据库中获取html并显示View()

e.g。 /帐户/ EditUser

在我的控制器中我有

public ActionResult EditUser(){

    return View();
}

public ActionResult LoadCMS(String URL){
    // check URL exists in DB
    // get the html from db
    // return the Html as a View to the user
    // if not exists then return error page
}

但是当我申请CMS页面时该怎么办:

e.g。 /帐户/ DisplayUser

在我的控制器中没有DisplayUser Action,所以转到LoadCMS 对不起,我不知道从哪里开始,所以我没有代码可以给。

任何帮助或指示都将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

  

在我的控制器中没有DisplayUser操作,所以转到LoadCMS抱歉我不知道从哪里开始,所以我没有代码可以给。

据我了解,您需要使用操作DisplayUser显示用户信息。所以你可以创建一个类似下面的动作。

 public ActionResult DisplayUser(string username){
    var userDetails = GetDataFromDatabase(userId);
    return View("User", userDetails);
 }

现在可以使用网址www.website.com/Users/DisplayUser/yrshaikh来实现此操作,前提是此操作位于UsersController控制器内,yrshaikh是用户名。

为了更好地理解,您可以尝试理解每个用户在stackoverflow上的配置文件链接,例如我的https://stackoverflow.com/users/1182982,其中userId为1182982,控制器名称为users(如果完成自定义路由,则可能会有所不同。)

所以,我希望通过这些信息你可以开始......