如何在點擊 Ajax.Actionlink 時刷新多個局部視圖
我在我的視圖上使用多個局部視圖。在左手側。我有一些連結按鈕。
在中間,我有 2 個局部視圖讓我們假設 Up 和 Down 我現在可以更新 Up 局部視圖 我想通過點擊同一個連結按鈕來更新 Down 局部視圖
我只能在 Ajax.ActionLink 按鈕中發送一個 UpdateTargetID,但我想在點擊同一個按鈕時更新 2 個部分視圖。
- 有什麼方法可以在 Ajax.ActionLink 中傳遞多個 UpdateTargetID 或 2) 我可以在 Home Controller 中返回多個部分視圖或您建議的任何其他方式請回复我
謝謝大家的回复讓我告訴你我做了什麼來一次點擊刷新多個局部視圖這是我用來點擊的操作連結這裡我正在使用此操作連結的 OnSucess 功能以更新,此操作連結在部分視圖上
<%= Ajax.ActionLink("Select", "Employee", new { Id = Employee.EmployeeID }, new AjaxOptions { UpdateTargetId = "EmployeeDiv", HttpMethod = "Post", OnSuccess = "function(){EmployeeHistory(-2," + Employee.EmployeeID.ToString() + ");}" })%>這是我從局部視圖呼叫的 javascript
function EmployeeHistory(EmployeeID) { var url = '<%= Url.Action("PartialviewAction", "ControllerName") %>' $('#PartialviewDiv1').load(url, { Id: EmployeeID }); var url1 = '<%= Url.Action("PartialviewAction", "ControllerName") %>' $('#PartialviewDiv2').load(url1, { Id: EmployeeID }); }這兩個 div 在我要更新的索引視圖中
<div id="Paritalview div1"><% Html.RenderPartial("PartialViewname1"); %></div> <div id="Paritalview div2"><% Html.RenderPartial("PartialViewname2"); %></div>
是的 - 不要使用
Ajax.ActionLink.IMO,MS Ajax 庫,與 Web 表單一樣,是臃腫的。
保持簡單 - 使用 jQuery - 然後你就可以完全控制:
$(function() { $('#somelink').click(function(e) { e.preventDefault(); $.get('/controller/action1', function(data) { $('#up').html(data); }); $.get('/controller/action2', function(data) { $('#down').html(data); }); }); });但是,由於您要更新兩個面板,我建議將這兩個中間面板包裝在它自己的部分視圖中 - 然後通過單個操作方法提供它 - 這樣您只需要 1 個 ajax 呼叫。
編輯
正如@FelixM 所提到的,您應該使用
Url.ActionorUrl.RouteUrl來生成 AJAX 呼叫的 URL,因此如果您的路線發生變化,那麼您的 JS 就不需要了,例如:
.get('@Url.Action('Controller', 'Action1')', function(data)要麼
.get('@Url.RouteUrl('SomeNamedRoute')', function(data)如果您將此腳本放在外部文件中,那麼您需要使用一種技術在主視圖中設置 url,然後從外部變數中讀取。
此類技術包括 JavaScript 變數、隱藏欄位、將 URL 作為參數傳遞給函式等。