创建一个与'不同的'页面

本文关键字:页面 一个 创建 | 更新日期: 2023-09-27 17:54:59

我有两个不同的页面,用户可以点击" details "链接进入详细信息页面。

在详细页面上,我有一个"返回"按钮,它将用户引导到原始页面,当然是两个原始页面之一。

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

我现在的视图代码是:

@{
    MvcHtmlString backLink = null;
    if (Model.ReturnPage == MatchResultReturnPage.Search)
    {
        backLink = Html.ActionLink("GoBack", "Search", new {search = true});
    }
    else
    {
        backLink = Html.ActionLink("GoBack", "Dashboard");
    }
} 

在控制器中,我现在查看url.referrer是否包含'dashboard',然后我将Model.ReturnPage设置为'dashboard'。

有更干净的方法吗?

创建一个与'不同的'页面

ReturnLink作为模型的属性并将其设置在控制器中,这将减轻您在视图中放置逻辑的需要。

当然有更干净的方法,但就您当前的代码而言,很容易理解您正在尝试做什么。

我会说保持原样,在它周围放一个#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

我唯一建议的是在控制器中进行此检查,而不是在视图中,并简单地将检查结果放在模型属性或ViewBag中。

要访问控制器中的helper,请执行以下操作:

var URL = new UrlHelper(this.Request.RequestContext).Action("MyAction", "MyController", new { id = 123 });

你可能应该完全用JavaScript实现后退按钮。
使用历史对象

<a href=”javascript:history.back()”> [Back]</a>