MVC 2:当调用者定义了 MapRoute 时,Ajax.ActionLink 重定向到新页面
一切正常,直到我还没有为具有 AJAX 的页面定义路由映射。
控制器
public ActionResult SessionDetails(int id, int collectionId, int sessionId) {
var model = new LegalActsListViewModel();
model.Setup(id, collectionId, sessionId, ApplicationContext.SessionService);
return PartialView("LegalActsListControl", model);
}
视图
<%: Ajax.ActionLink(session.Name, "SessionDetails", "Institution", new { id = Model.InstitutionId, collectionId = Model.CollectionId, sessionId = session.Id }, new AjaxOptions { UpdateTargetId = "session_" + session.Id, OnSuccess = "updatePlaceholder", HttpMethod = "Post", InsertionMode = InsertionMode.Replace })%>
上面的内容与默认路线图完美配合。目前我已添加路线图如下:
routes.MapRoute("Institution_Collection_Terms",
"institution/{id}/collection/{collectionId}/terms",
new { controller = "Institution", action = "Terms" },
new { id = @"\d+", collectionId = @"\d+" });
PartialResult 被重定向到:
http://localhost:9085/Institution/SessionDetails/850?collectionId=22184&sessionId=77
这是所有路线:
routes.MapRoute("Institution_Collection_Keywords",
"institution/{id}/collection/{collectionId}/keywords",
new { controller = "Institution", action = "Keywords" },
new { id = @"\d+", collectionId = @"\d+" });
//routes.MapRoute("Institution_Collection_Terms",
// "institution/{id}/collection/{collectionId}/terms",
// new { controller = "Institution", action = "Terms" },
// new { id = @"\d+", collectionId = @"\d+" });
routes.MapRoute("Institution_Collection_Yearbooks",
"institution/{id}/collection/{collectionId}/yearbooks",
new { controller = "Institution", action = "Yearbooks" },
new { id = @"\d+", collectionId = @"\d+" });
routes.MapRoute("Institution_Collection_YearbookDetails",
"institution/{Id}/collection/{collectionId}/yearbook/{year}/{month}",
new { controller = "Institution", action = "YearbookList", month = UrlParameter.Optional },
new { Id = @"\d+", collectionId = @"\d+", year = @"^(19|20)\d{2}$" });
routes.MapRoute("Institution_Collection_List",
"institution/{id}/collection/{collectionId}/list",
new { controller = "Institution", action = "List" },
new { id = @"\d+", collectionId = @"\d+" });
routes.MapRoute("Institution_Collection_KeywordDetails",
"institution/{id}/collection/{collectionId}/keyword/{keywordId}",
new { controller = "Institution", action = "KeywordDetails" },
new { id = @"\d+", keywordId = @"\d+", collectionId = @"\d+" });
//routes.MapRoute("Institution_Collection_TermsDetails",
// "institution/{id}/collection/{collectionId}/session/{sessionId}/details",
// new { controller = "Institution", action = "SessionDetails" },
// new { id = @"\d+", sessionId = @"\d+", collectionId = @"\d+" });
routes.MapRoute("Institution_SearchLegalActs",
"institution/{institutionId}/searchlegalacts",
new { controller = "Institution", action = "SearchLegalActs" },
new { institutionId = @"\d+" });
routes.MapRoute("Institution_Keywords",
"institution/{id}/keywords",
new { controller = "Institution", action = "Keywords" },
new { id = @"\d+" });
routes.MapRoute("Institution_KeywordDetails",
"institution/{id}/keyword/{keywordId}",
new { controller = "Institution", action = "KeywordDetails" },
new { id = @"\d+", keywordId = @"\d+" });
routes.MapRoute("Institution_Yearbooks",
"institution/{id}/yearbooks",
new { controller = "Institution", action = "Yearbooks" },
new { id = @"\d+" });
routes.MapRoute("Institution_YearbookDetails",
"institution/{Id}/yearbook/{year}/{month}",
new { controller = "Institution", action = "YearbookList", month = UrlParameter.Optional },
new { Id = @"\d+", year = @"^(19|20)\d{2}$" });
routes.MapRoute("Institution_List",
"institution/{id}/list",
new { controller = "Institution", action = "List" },
new { id = @"\d+" });
routes.MapRoute("Institution_RecentAdded",
"institution/{id}/recentadded",
new { controller = "Institution", action = "RecentAdded" },
new { id = @"\d+" });
routes.MapRoute("Institution_MostPopular",
"institution/{id}/mostpopular",
new { controller = "Institution", action = "MostPopular" },
new { id = @"\d+" });
routes.MapRoute("Institution_Default",
"institution/{id}",
new { controller = "Institution", action = "Keywords" });
routes.MapRoute("Home_LegalActs",
"legalacts",
new { controller = "Home", action = "LegalActs" });
routes.MapRoute("Home_Institutions",
"institutions",
new { controller = "Home", action = "Institutions" });
routes.MapRoute("Home_Voivodeship",
"voivodeship/{voivodeship}",
new { controller = "Home", action = "Voivodeship" });
routes.MapRoute("Home_Journals",
"journals/{view}",
new { controller = "Home", action = "Journals" });
routes.MapRoute("Home",
"{controller}",
new { controller = "Home", action = "Index" });
routes.MapRoute("Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
提前致谢, 莱谢克
everything works fine till I haven't defined route map for page having AJAX.
Controller
public ActionResult SessionDetails(int id, int collectionId, int sessionId) {
var model = new LegalActsListViewModel();
model.Setup(id, collectionId, sessionId, ApplicationContext.SessionService);
return PartialView("LegalActsListControl", model);
}
View
<%: Ajax.ActionLink(session.Name, "SessionDetails", "Institution", new { id = Model.InstitutionId, collectionId = Model.CollectionId, sessionId = session.Id }, new AjaxOptions { UpdateTargetId = "session_" + session.Id, OnSuccess = "updatePlaceholder", HttpMethod = "Post", InsertionMode = InsertionMode.Replace })%>
This above works perferct with default route map. In the moment I have added route map as below:
routes.MapRoute("Institution_Collection_Terms",
"institution/{id}/collection/{collectionId}/terms",
new { controller = "Institution", action = "Terms" },
new { id = @"\d+", collectionId = @"\d+" });
PartialResult is redirected to:
http://localhost:9085/Institution/SessionDetails/850?collectionId=22184&sessionId=77
Here are all routes:
routes.MapRoute("Institution_Collection_Keywords",
"institution/{id}/collection/{collectionId}/keywords",
new { controller = "Institution", action = "Keywords" },
new { id = @"\d+", collectionId = @"\d+" });
//routes.MapRoute("Institution_Collection_Terms",
// "institution/{id}/collection/{collectionId}/terms",
// new { controller = "Institution", action = "Terms" },
// new { id = @"\d+", collectionId = @"\d+" });
routes.MapRoute("Institution_Collection_Yearbooks",
"institution/{id}/collection/{collectionId}/yearbooks",
new { controller = "Institution", action = "Yearbooks" },
new { id = @"\d+", collectionId = @"\d+" });
routes.MapRoute("Institution_Collection_YearbookDetails",
"institution/{Id}/collection/{collectionId}/yearbook/{year}/{month}",
new { controller = "Institution", action = "YearbookList", month = UrlParameter.Optional },
new { Id = @"\d+", collectionId = @"\d+", year = @"^(19|20)\d{2}$" });
routes.MapRoute("Institution_Collection_List",
"institution/{id}/collection/{collectionId}/list",
new { controller = "Institution", action = "List" },
new { id = @"\d+", collectionId = @"\d+" });
routes.MapRoute("Institution_Collection_KeywordDetails",
"institution/{id}/collection/{collectionId}/keyword/{keywordId}",
new { controller = "Institution", action = "KeywordDetails" },
new { id = @"\d+", keywordId = @"\d+", collectionId = @"\d+" });
//routes.MapRoute("Institution_Collection_TermsDetails",
// "institution/{id}/collection/{collectionId}/session/{sessionId}/details",
// new { controller = "Institution", action = "SessionDetails" },
// new { id = @"\d+", sessionId = @"\d+", collectionId = @"\d+" });
routes.MapRoute("Institution_SearchLegalActs",
"institution/{institutionId}/searchlegalacts",
new { controller = "Institution", action = "SearchLegalActs" },
new { institutionId = @"\d+" });
routes.MapRoute("Institution_Keywords",
"institution/{id}/keywords",
new { controller = "Institution", action = "Keywords" },
new { id = @"\d+" });
routes.MapRoute("Institution_KeywordDetails",
"institution/{id}/keyword/{keywordId}",
new { controller = "Institution", action = "KeywordDetails" },
new { id = @"\d+", keywordId = @"\d+" });
routes.MapRoute("Institution_Yearbooks",
"institution/{id}/yearbooks",
new { controller = "Institution", action = "Yearbooks" },
new { id = @"\d+" });
routes.MapRoute("Institution_YearbookDetails",
"institution/{Id}/yearbook/{year}/{month}",
new { controller = "Institution", action = "YearbookList", month = UrlParameter.Optional },
new { Id = @"\d+", year = @"^(19|20)\d{2}$" });
routes.MapRoute("Institution_List",
"institution/{id}/list",
new { controller = "Institution", action = "List" },
new { id = @"\d+" });
routes.MapRoute("Institution_RecentAdded",
"institution/{id}/recentadded",
new { controller = "Institution", action = "RecentAdded" },
new { id = @"\d+" });
routes.MapRoute("Institution_MostPopular",
"institution/{id}/mostpopular",
new { controller = "Institution", action = "MostPopular" },
new { id = @"\d+" });
routes.MapRoute("Institution_Default",
"institution/{id}",
new { controller = "Institution", action = "Keywords" });
routes.MapRoute("Home_LegalActs",
"legalacts",
new { controller = "Home", action = "LegalActs" });
routes.MapRoute("Home_Institutions",
"institutions",
new { controller = "Home", action = "Institutions" });
routes.MapRoute("Home_Voivodeship",
"voivodeship/{voivodeship}",
new { controller = "Home", action = "Voivodeship" });
routes.MapRoute("Home_Journals",
"journals/{view}",
new { controller = "Home", action = "Journals" });
routes.MapRoute("Home",
"{controller}",
new { controller = "Home", action = "Index" });
routes.MapRoute("Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
Thanks in advance,
Leszek
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论