【发布时间】:2014-09-01 23:02:46
【问题描述】:
我们目前正在开发一个 MVC 应用程序,但我们的 URL 遇到了一些问题。
我们在控制器中有两个简单的操作方法:
public PartialViewResult Index(ListingPagePress currentPage)
{
var model = new ListingPagePressViewModel(currentPage);
var pressReleaseChildren = GetData(currentPage, 0);
model.PressReleasePages = pressReleaseChildren;
model.TotalPages = 3;
return PartialView(model);
}
public PartialViewResult PressReleaseList(ListingPagePress currentPage, int pageNo)
{
IEnumerable<PressReleasePageViewModel> data = GetData(currentPage, pageNo);
return PartialView(data);
}
PressReleaseList 使用动作呈现,即:
@Html.Action("PressReleaseList", new { pageNo = 0 })
然后我们有一些简单的分页:
@for (var i = 0; i < Model.TotalPages; i++)
{
@Ajax.ActionLink(i.ToString(), "Index",
new { pageNo = i },
new AjaxOptions
{
UpdateTargetId = "pressReleaseTable",
OnBegin = "OnAjaxRequestBegin",
OnFailure = "OnAjaxRequestFailure",
OnSuccess = "OnAjaxRequestSuccess",
OnComplete = "OnAjaxRequestComplete"
})
}
不引人注目的 ajax 工作得很好。问题是,如果客户端禁用了 javascript,他们最终会通过一个可怕的 url 导航到部分视图,例如:
http://example.com/press-releases/PressReleaseList/?pageNo=1
而我们希望保留真实的 URL 结构,即:http://example.com/press-releases/?pageNo=1
我们如何实现这一目标?映射路线是唯一的可能性吗?这对我们来说非常困难,因为我们正在使用 CMS,所以我们永远不知道确切的 url 前缀是什么,因为用户可以更改“新闻稿”的 url。
任何建议将不胜感激
问候 点开发
【问题讨论】:
-
为什么支持禁用 javascript 的客户端很重要?听起来像是 10 年前的问题。我想知道你为什么还要关心?
-
主要是因为搜索引擎没有启用Javascript,所以他们会索引带有ActionNAme的url。
标签: asp.net-mvc asp.net-mvc-4 asp.net-ajax