问题 返回View with Model并转到特定锚标记


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

例如,我的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?

7047
2018-04-09 14:27


起源

我不懂这啥意思? - Liam
@Liam真的吗?对我来说似乎很明显。我会编辑它。 - TTT
那更好!您尝试重定向的动作是什么样的? - Liam


答案:


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

$(document).ready(function () {
    var anchor = document.getElementById('@Model.Section');
    anchor.scrollIntoView(true);
});

12
2018-04-09 15:44



谢谢。工作得很好。我更改了我的锚点以指定id而不是名称:<a id="Section1"> </a> - TTT


首先,我们需要将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


1
2018-03-21 19:07