在MVC Asp.Net中使用HTML.ActionLink时如何保持滚动位置?

时间:2014-01-15 10:47:30

标签: asp.net-mvc asp.net-mvc-3

我有以下代码:

<a href="@Url.Action("Approve", new {id = item.Id})">Approve</a>

这会调用我的控制器中的Action方法更新记录的批准状态,然后:

return RedirectToAction("Index");

正如预期的那样,页面总是刷新到顶部。有没有办法将滚动位置保持在我单击超链接的位置。我检查了类似的帖子,但我看过的那些帖子提到了表格。最终我将使用JQuery / Ajax。但是目前我想看看是否有一个可以像HTML属性一样使用的简单方法。

非常感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用哈希表示法命名锚标记并引用href中的名称:

<a href="@Url.Action("Approve", new { id = item.Id })" id="@( item.Id )" name="@( item.Id )">Approve</a>

然后在你的行动方法中:

string redirectUrl =
    string.Format(
        "{0}#{1}",
        Url.Action("Index"),
        id);

return new RedirectResult(redirectUrl);

请确保您的id是值HTML id(HTML5中几乎任何内容都可以是有效的id,但规则适用于ids的早期命名HTML版本)。如果有疑问,请在使用HTML之前为其添加“aid-”(批准ID)等内容。

否则,就像您已经确定的那样,最好的办法是使用AJAX调用进行批准。通过这种方式,您可以准确地保持在页面上的位置。