2011-05-31 79 views
0

我正在使用MVC 3.頁面內容來自SQL數據庫。當我嘗試使用Javascript傳遞變量時,我注意到了一個問題。當url顯示目錄/ pagename時,它不起作用,但是如果url是目錄,它就可以工作?= pagename !!任何想法爲什麼以及如何更改網址爲?= id。 這裏是操作鏈接:asp.net mvc 3將「URL」從「/」更改爲「?id =」

<%: Html.ActionLink("Go", "CourseContent", new { id = Model.ID })%> 

路由在全球

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 
    } 

這裏是控制器:

public virtual ActionResult CourseContent(long id) 
{ 
    Course requestedCourse = _courseSvc.GetCourse(id); 
    if (requestedCourse == null) 
     return new HttpNotFoundResult(); 

    string loggedInUserName = HttpContext.User.Identity.Name; 
    string loggedInRoleName = _membershipSvc.GetRoleForUser(loggedInUserName); 

    if (_courseSvc.DetermineIfTheUserCanAttendCourse(id, Request.IsAuthenticated, loggedInUserName, loggedInRoleName)) 
     return View(requestedCourse); 

    return RedirectToAction("Index"); 
} 

在此先感謝

+3

什麼不行?你怎麼用javascript調用這個URL? – 2011-05-31 16:35:21

回答

0

它應與/控制器工作/ action/id,但你總是可以這樣做:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}?id={id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 
}