2011-05-20 42 views
1

我試圖找出一種方法來重新加載表後,每個按鈕的動作。我正在考慮重新加載頁面,但我不知道如何重新加載頁面,然後將從WebService函數返回的消息打印到div中。如何重新加載視圖後調用JQuery做動作和顯示消息

CSHTML代碼:

@model Namespace.Models.ItemModel 
<div id="deleted" /> 
<input text id="curSelId" /> 
<input text id="curSelObj" /> 
<input text id="curSelfObjId" /> 
<table> 
<tbody> 
    @foreach (var item in Model.myDeleted) 
    { 
     <tr id="@item.DeletedId" value="@item.DeletedId"> 
      <td>@item.Timestamp</td> 
      <td class="type">@item.Type</td> 
      <td class="typeid">@item.TypeId</td> 
     </tr> 
    } 
</tbody> 
</table> 

JQuery的代碼:

function Undo() 
    { 
     $.ajax({ 
      type: "POST", 
      url: "@Url.Content("~/webservices/retrieve.asmx/Undo")", 
      data: "{'index': '" + $('[id$=curSelId]').val() + "'," + 
        "'type': '" + $('[id$=curSelObj]').val() + "'," + 
        " 'typeId': '" + $('[id$=curSelObjId]').val() + "'}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (msg) { 

       //http://encosia.com/2009/06/29/never-worry-about-asp-net-ajaxs-d-again/ 
       if (msg.hasOwnProperty("d")) { 
        // Leave the .d behind and pass the rest of 
        // the JSON object forward. 
        var obj = msg.d; 
        $("#deleted").html(obj); 
       } 
       else { 
        // No .d; no transformation necessary. 
        AjaxSucceeded(msg, dropdown, hidden); 
       } 
      } 
      , error: AjaxFailed 
     }); 
    } 

被修改:增加輸入字段。

回答

0

一個重新加載它的方式是使用AJAX:

@model Namespace.Models.ItemModel 
<div id="deleted"></div> 
<div id="mytable" data-url="@Url.Action("MyTable", "SomeController")"> 
    @Html.Partial("_MyTable", Model) 
</div> 

其中_MyTable.cshtml包含表:

@model Namespace.Models.ItemModel 
<table> 
<tbody> 
    @foreach (var item in Model.myDeleted) 
    { 
     <tr id="@item.DeletedId" value="@item.DeletedId"> 
      <td>@item.Timestamp</td> 
      <td class="type">@item.Type</td> 
      <td class="typeid">@item.TypeId</td> 
     </tr> 
    } 
</tbody> 
</table> 

和你的Ajax請求的成功回調中重新加載DIV:

success: function (msg) { 
    var myTableDiv = $('#mytable'); 
    myTableDiv.load(myTableDiv.data('url')); 
    ... 
} 

其中MyTable動作會呈現相同的部分:

public ActionResult MyTable() 
{ 
    ItemModel model = ... 
    return PartialView("_MyTable");  
} 
+0

如果我從調用_MyTable的頁面使用ajax,仍可以從_MyTable.cshtml獲取值嗎?如何從父頁面獲取部分值。 – 2011-05-20 16:53:58

+0

@ user759458,你想抓取什麼樣的值以及在哪裏(javascript?)? – 2011-05-20 16:55:42

+0

我設置了當我點擊表格行時,它會填充一些輸入文本和關於它被點擊的行的信息,所以當我點擊按鈕時,它將拉動索引,類型和typeId(如圖所示ajax call。在代碼中添加了輸入字段 – 2011-05-21 22:29:25

相關問題