我有两个不同的页面,用户可以从中点击“详细信息”链接并转到详细信息页面。
在详细信息页面上,我有一个“后退”按钮,它将用户引导至原始页面,当然是两个原始页面之一。
还有一个额外的问题:在其中一个返回链接中,我必须指定一个额外的匿名对象。
我的观看代码现在是:
@{
MvcHtmlString backLink = null;
if (Model.ReturnPage == MatchResultReturnPage.Search)
{
backLink = Html.ActionLink("GoBack", "Search", new {search = true});
}
else
{
backLink = Html.ActionLink("GoBack", "Dashboard");
}
}
在控制器中,我现在查看url.referrer
是否包含'信息中心',然后我将Model.ReturnPage
设置为'信息中心'
有更清洁的方法吗?
答案 0 :(得分:2)
将ReturnLink
作为属性放在模型上并将其设置在控制器内,这样可以减少将逻辑放在视图中的需要。
答案 1 :(得分:1)
当然有更简洁的方法,但正如您的代码目前一样,很容易理解您的目标。
我想说保持原样并简单地在它周围放一个#region包装并在你不需要使用它时隐藏它:
#region get referrer page
MvcHtmlString backLink = null;
if (Model.ReturnPage == MatchResultReturnPage.Search)
{
backLink = Html.ActionLink("GoBack", "Search", new {search = true});
}
else
{
backLink = Html.ActionLink("GoBack", "Dashboard");
}
#region
我唯一建议的是在Controller中进行此检查,而不是视图,只需将检查结果放在模型属性或ViewBag中。
要访问控制器中的助手,请执行以下操作:
var URL = new UrlHelper(this.Request.RequestContext).Action("MyAction", "MyController", new { id = 123 });
答案 2 :(得分:0)
你应该完全用JavaScript实现Back按钮。
使用history object
<a href=”javascript:history.back()”> [Back]</a>