1

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

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

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

我现在的视图代码是:

@{
    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为“仪表板”。

有更清洁的方法吗?

4

3 回答 3

2

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

于 2013-01-22T13:13:56.053 回答
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

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

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

var URL = new UrlHelper(this.Request.RequestContext).Action("MyAction", "MyController", new { id = 123 });
于 2013-01-22T13:26:27.120 回答
0

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

<a href=”javascript:history.back()”&gt; [Back]</a>
于 2013-01-22T13:18:24.857 回答