2012-01-09 398 views
2

我有一個顯示數據表的網頁。我的頁面在某些元素上有jQuery,這樣當元素髮生更改時,將對數據庫進行Ajax調用,並在數據庫中更新元素。刷新/更新部分MVC頁面的最「MVC」標準方式是什麼?

我也有一段時間需要完全刷新數據網格。在我看來,有兩種方法可以做到這一點:

1)使用Ajax調用我的控制器操作,檢查是否使用Request.IsAjaxRequest發出Ajax請求,將HTML.Partial返回到調用Ajax的javascript以及有更新HTML。我已經有90%的工作方法了。

Previous stackoverflow question

2)使用以下:

<div id="#thingy">@Html.Action("Detail", new { ac, me })</div> 
$('#thingy').load("@Server.JavaScriptStringEncode(Url.Action("Detail", new { ac, me }))"); 

現在我仍然試圖讓第一工作方法也期待在第二種方法和思維看起來輕鬆了許多。

我想寫的代碼可以工作,但也代碼最符合MVC的做事方式。考慮到這一點。這可能是最好的方法?有一件事關注我的是@ Server.Java ...代碼。我從來沒有見過這個,我想知道這是如何處理與MVC,所有正常的安全性得到應用?

+0

梅麗莎 - 在這裏越來越似曾相識。和這裏http://stackoverflow.com/questions/8785596/problems-implementing-ajax-to-return-a-html-partial-page-in-mvc3 :) – 2012-01-09 10:36:23

+0

嗨吉姆,你看到我包括的問題鏈接。我有另一種方法建議給我。這是一個不同的問題,因爲我正在尋找一些建議。另一種方法完全不同。只是想要做到這一點,我可以去工作的最佳方式。謝謝。 – 2012-01-09 10:41:06

+1

use window.location.reload(); – user1006544 2012-01-09 10:48:34

回答

5

梅麗莎,

我幾乎可以肯定有partialview(和@RenderPartial()IF在視圖模型是一樣的,在partialview堅持,否則,你可以選擇爲@RenderAction()幫手調用數據在您的視圖中刷新,其中基本數據類型與基本視圖數據類型顯着不同。

你會從你的應用程序中知道哪種方法最適合用於有問題的用例,但肯定RenderPartial()將是重要的方法,其中ajax更新在稍後的片段中需要更新div中的html。

[編輯] - 這裏的我怎麼會看到這個列明做法:

// this is a div contained within the main Detail.cshtml view 
<div id="#thingy">@Html.RenderPartial("_Detail", Model)</div> 

這將在一號通自動對一個名爲_Detail.cshtml partialview模型填充DIV。隨後,您將通過按照上述方式返回partialview和model的操作來調用您的ajax來定位同一個div(#thingy)。

即:

public ActionResult Detail(string ac, string me) {  
    vm.AdminDetails = _link.Detail(ac + me).ToList();  
    if (Request.IsAjaxRequest())   
     return PartialView("_Detail", vm);  
    return View(vm); 
} 

希望這是有道理的。

祝你好運

+0

謝謝你的幫助吉姆。我會盡力實現這一點,然後再標記答案。我只是提出了你的幫助,但如果一切還好,我可以稍後再接受。只是想先檢查一下。 – 2012-01-09 11:28:11

+0

梅麗莎 - 完全理解。任何問題,只需放下一個便條,我就會通過編輯上面的答案來創建一個更完整的示例。 – 2012-01-09 11:29:55

+0

方法工作,但一旦部分刷新我的jQuery綁定似乎已經消失。我需要更多地考慮這一點。謝謝你的幫助。 – 2012-01-09 12:00:21