這應該只取代UpdateTarget,但它不會,它會取代整個頁面,我不明白爲什麼。正在返回正確的局部視圖,但不是替換目標ID,而是替換整個頁面。爲什麼Ajax.ActionLink更新整個頁面而不只是UpdateTarget
<div id="magHeader">
<p>this is a test.</p>
@Ajax.ActionLink("Edit", "GetEditor", "Home", new AjaxOptions(){ UpdateTargetId = "magHeader", InsertionMode = InsertionMode.Replace})
</div>
在運行時,鏈接如下:
<a href="/Home/GetEditor" data-ajax-update="#magHeader" data-ajax-mode="replace" data-ajax="true">Edit</a>
有什麼,我做錯了什麼?在過去沒有問題的情況下成功完成了這項工作。
編輯 此問題的根本原因是,在VS 2012中,您只需要添加對JQueryVal包的引用即可實現此功能。但是,在2013年,BundleConfig.cs已更改,以便JQueryVal包不再包含JQuery.Unobtrusive。所以簡單的解決方法是將其添加回管束:
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
然後按預期都將正常工作。
好的,所以我看了視頻,那正是我遇到的問題。但是,它仍然沒有解決。從VS 13中的新項目開始,我會按照視頻中的步驟進行操作,並確保包含jqueryval。但整個頁面仍被替換。在FireFox中,我可以檢查腳本標籤並查看jqueryval是否已加載以及jquery.validate.unobtrusive.js。所以它沒有任何意義。 –
你添加了這些軟件包(我編輯了我的答案) – Mitul
我檢查了這些軟件包沒有安裝。所以我安裝了它們。但是,我仍然得到相同的結果 - 頁面被替換,而不是id。 –