2016-04-21 69 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