2016-04-21 72 views
2

嗨我工作在一个网站与一个自助模板。我想要的是,当用户点击一个链接时,它会调用一个控制器函数返回一个视图并将焦点集中到正文部分。RenderBody没有渲染我的视图

要做到这一点我有_layout与我使身体机能

<section id="bodySection"> 
@RenderBody() 
@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/bundles/bootstrap") 
@RenderSection("scripts", required: false) 

这调用功能可按并注重身体

<a href="#bodySection" onclick="myFunction()">Education</a> 

我的功能大火在HREF onclick:

<script type="text/javascript"> 
    function myFunction() { 
     //alert("I am an alert box!"); 
     $.post("@Url.Action("Education", "Education")"); 
     } 
</script> 

而且我CONTROLER

public ActionResult Education() 
    { 
     {...........} 
     return View(); 
    } 

当我按下按钮的焦点转到主体部分,该控制器被调用,但主体部分仍用旧观点。如果我检查页面,我没有得到任何错误。 有人可以告诉我发生了什么事吗?

回答

0

您的代码不起作用,因为标记只是一个锚点链接,它只会将页面滚动到#bodySection所在的位置,并执行$ .post到返回特定结果的服务,但不会重定向到新的页面。

我会改变你的链接到:

<a href="@Url.Action("Education", "Education")">Education</a> 

然后将下面的脚本添加到视图以使页面自动平滑滚动至定位点上的负荷每次:

<script type="text/javascript"> 
    $("html,body").animate({ 
     scrollTop: $("#bodySection").offset().top 
    }, 1000); 
</script> 
+0

非常感谢,我想做一个平滑的滚动,我试过这个 anchor.scrollIntoView({block:“start”,behavior:“smooth”}); 但它只适用于Firefox。 你有什么想法吗? – Jose

+0

我编辑了答案 – tocqueville

+0

YEAH!这就是我所需要的,但我之前尝试过,但不知何故,它不工作,只有一个问题,是否有办法在所有视图中都不写这最后一段代码的情况下对所有视图执行相同操作? – Jose