什么是为不同的“来自”页面创建后退按钮的好方法

时间:2013-01-22 13:11:26

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

我有两个不同的页面,用户可以从中点击“详细信息”链接并转到详细信息页面。

在详细信息页面上,我有一个“后退”按钮,它将用户引导至原始页面,当然是两个原始页面之一。

还有一个额外的问题:在其中一个返回链接中,我必须指定一个额外的匿名对象。

我的观看代码现在是:

@{
    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设置为'信息中心'

有更清洁的方法吗?

3 个答案:

答案 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>