2010-12-09 47 views
2

控制器:ASP.NET MVC 2:jQuery調用操作,更新視圖?

public ActionResult Index() 
     { 

      // not using the interface right now 
      DealsRepository _repo = new DealsRepository(); 
      var deals = _repo.GetDeals("<Request><ZipCode>92618</ZipCode></Request>"); 

      return View(deals); 
     } 

     [HttpPost] 
     public ActionResult Index(string data) 
     { 

      // not using the interface right now 
      DealsRepository _repo = new DealsRepository(); 
      var deals = _repo.GetDeals(data); 

      return View(deals); 
     } 

的jQuery:

var url = '<%: Url.Action("Index", "Deal") %>'; 
var data = '<Request><ZipCode>92618</ZipCode></Request>'; 

$.post(url, data, function (result) { 
    alert(result); 
}); 

我想要做的就是刷新(重裝)與更新後的模型查看......我不想使用jQuery更新內容。使用更新後的模型複製視圖。

換句話說,一旦用戶在他們的搜索中輸入了一些改進或者選擇了一個過濾器,我需要撥打電話,然後用最新的Model搜索結果重新加載頁面。

回答

2

你根本不需要javascript來發表一個表單,這就是你所要做的。

只需將提交按鈕添加到您的html表單。當點擊提交按鈕時,表單將被髮布到控制器以及與html表單相關的操作。該控制器和行動將返回一個ActionResult這將是你的刷新視圖如果你選擇......

在你看來,你可以做這樣的事情:

<%Html.BeginForm("ActionName", "ControllerName", FormMethod.Post); %> 
<!-- more form fields here --> 
<input type="submit" value="Go"/> 
<%Html.EndForm(); %> 
0

的觀點應該有一個div或類似物體的ID(例如myDivId),然後在您的文章,您需要做的僅僅

$.post(url, data, function (result) { 
    $('#myDivId').html(result); 
}); 
+0

不,我不想用jQuery更新頁面上的內容。我寧願只刷新頁面...這正是我想要完成的。 – dcolumbus 2010-12-09 00:11:19

0

有時候,我只是重裝後提交按鈕單擊該頁面。

<script type="text/javascript"> 

    $("#SubmitButton").click(function() { 
      window.location.reload(true); 
    }); 

</script> 
+0

我不認爲這是我應該做的。如果模型內容需要更新,您如何重建視圖? – dcolumbus 2010-12-09 00:28:06

+0

您可以從您的控制器傳回新模型中的View(),或者您可以調用RedirectToView。提交按鈕調用控制器動作,更新模型,然後再次返回查看視圖(「視圖名」,模型)調用。 – rboarman 2010-12-09 00:35:50

0

如果你只是要刷新頁面,L有很少的優勢給JS AJAX調用,除非你在1-30第二範圍

等待定時事件如果是這樣的的情況下,等到你的迴應,只是在做一個JS重裝:

window.location.reload() 

history.go(0) 

(我推薦前者)