13

我有一个带有多个锚标签的视图。有没有办法返回带有模型对象的视图并转到视图中的特定锚标记?

例如,我的 View 有这样的锚点:

   <a name="Section1"></a>
   ...
   <a name="Section2"></a>

我知道我可以使用以下方法击中这些锚点:

return Redirect(Url.RouteUrl(new { controller = "myController", action = "myAction" }) + "#Section1");

但我不认为我可以使用重定向,因为我需要发送一个模型:

return View("myAction", model); // how to go to anchor?
4

2 回答 2

15

您可以在视图模型中发送一些内容以查看并使用 javascript 滚动到该锚点。例如,假设您有一个名为 Section 的属性。您可以在控制器中设置它并在视图中使用此 javascript 代码滚动到该锚点:

$(document).ready(function () {
    var anchor = document.getElementById('@Model.Section');
    anchor.scrollIntoView(true);
});
于 2013-04-09T15:44:16.877 回答
5

首先,我们需要将 achor 传递给我们的视图:

控制器:

    ViewBag.Section = "register"; //#register         
    return View();

看法:

@if (ViewBag.Section!=null)
{
    <script>
        $(function () {              
                window.location.hash = '#@ViewBag.Section';
        });
    </script>
}

现在您可以使用“如何滚动到锚点”答案https://stackoverflow.com/a/15906458/7149454

于 2018-03-21T19:07:56.740 回答