2011-05-18 49 views
0

之前,我有我的表單直接調用Action,但現在,我想在調用Action之前使用JQuery來做些事情。我遇到的問題是,之前,當我從控制器調用返回View()時,它將重新加載部分頁面,並在消息中放入Viewbag.Message。我如何用JQuery來做到這一點?如何讓JQuery返回View?

$("#button").click(function() { 
    DoStuff(); 
}); 
function DoStuff() 
{ 
    $.ajax("Home/DoStuff"), function() { 

    }; 
} 

$

[HttpPost] 
public ActionResult DoStuff() 
{ 
    string value = Request.Form["value"]; 

    Viewbag.Message = TempData["message"]; 

    CustomView view = new CustomView(); 
    return View(view); 
} 

回答

2

考慮這樣的事情(未測試):

<html> 
    ... 
<body> 
    ... 
    @Html.RenderAction("DoStuff", new { value: "" }); 
    ... 
</body> 

管窺DoStuff.cshtml:

<div class="doStuffContent"> 
<script type="text/javascript"> 
$("#button").click(function() { 
    DoStuff(); 
}); 
function DoStuff() 
{ 
    $.ajax(
    { 
     url: @Url.Action("DoStuff"), 
     data: {value: "testData"}, 
     success: function(result) 
      { 
       $("doStuffContent").replaceWith(result); 
      }}); 
} 
</script> 
<a id="button">click me</a> 
@ViewBag.message 
</div> 

操作:

[HttpGet] 
public ActionResult DoStuff() 
{ 
    Viewbag.Message = ""; 

    return View(); 
} 

[HttpPost] 
public ActionResult DoStuff(string value) 
{ 
    Viewbag.Message = "Received " + value + "!"; 

    return View(); 
} 
+0

我在這個[link](http://hectorcorrea.com/Blog/AJAX-calls-with-jQuery-in-ASP.NET-MVC)找到了一些東西。它顯示了你所寫的內容。它使用Json返回來讓我返回值而不是使用Viewbag。然後我可以使用JQuery將該值放入div中,因此我不必依賴Viewbag。 – 2011-05-18 17:19:46

+0

對,如果你只是需要這些數據,那麼解決方案會更好。作爲旁註:如果你使用Views/PartialViews,ViewBag通常不是最好的選擇 - 使用強類型視圖,這可以長期避免很多頭痛。 – 2011-05-18 19:55:28

相關問題