Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC3&;Ajax:刷新列表以隐藏通过单击按钮从列表中删除的记录_C#_Jquery_Ajax_Asp.net Mvc 3_Asp.net Mvc 4 - Fatal编程技术网

C# MVC3&;Ajax:刷新列表以隐藏通过单击按钮从列表中删除的记录

C# MVC3&;Ajax:刷新列表以隐藏通过单击按钮从列表中删除的记录,c#,jquery,ajax,asp.net-mvc-3,asp.net-mvc-4,C#,Jquery,Ajax,Asp.net Mvc 3,Asp.net Mvc 4,我有一个列表,显示订阅的论坛线程,每行有一个按钮取消订阅。我可以使用Ajax取消订阅,但我想使用Ajax刷新以从列表中删除取消订阅的线程。谁能给我推荐一下吗。我的代码如下: 使用Ajax背后的想法是因为我只想刷新列表部分,而不是整个页面 Index.aspx <% foreach (var thread in Model.threads) { %> <tr> <td><%: thread.Title %></td>

我有一个列表,显示订阅的论坛线程,每行有一个按钮取消订阅。我可以使用Ajax取消订阅,但我想使用Ajax刷新以从列表中删除取消订阅的线程。谁能给我推荐一下吗。我的代码如下:

使用Ajax背后的想法是因为我只想刷新列表部分,而不是整个页面

Index.aspx

<% foreach (var thread in Model.threads) { %>
    <tr>
        <td><%: thread.Title %></td>
        <td><%: Ajax.ActionLink("Unsubscribe", "ToggleForumAlertFromList",
                    new { id = thread.ForumId },
                    new AjaxOptions { HttpMethod = "POST", 
                        UpdateTargetId = "none", 
                    new { ID = "togglealertlink" })%>
        </td> 
    </tr>
<% } %>       

您需要连接一个OnSuccess回调,该回调在POST完成时触发

此回调可以重新查询列表,也可以从列表中删除未订阅的项目

<% foreach (var thread in Model.threads) { %>
    <tr id= "<%: thread.ForumId %>">
        <td><%: thread.Title %></td>
        <td><%: Ajax.ActionLink("Unsubscribe", "ToggleForumAlertFromList",
                    new { id = thread.ForumId },
                    new AjaxOptions { HttpMethod = "POST", 
                        UpdateTargetId = "none", 
                        OnSuccess = "removeItem('thread.ForumId')"
                    new { ID = "togglealertlink" })%>
        </td> 
    </tr>
<% } %> 

function removeItem(itemId) {
    $("#" + itemId).remove();
}

函数removeItem(itemId){
$(“#”+itemId).remove();
}

这假设每个父级
元素都被分配了一个唯一的forumId,如上图所示。

这似乎是可行的,但我无法理解为什么在MVC 3中使用aspx表单而不是cshtml视图。你有什么特别的问题吗?有什么东西出错了还是不起作用了?我怀疑这应该是一个帖子,而不是一个GET。最简单的方法是使用
$.post()
传递id,然后在方法中返回表示成功的json,在成功回调中,只需从DOM中删除关联项(
元素)(无需再次更新整个列表)@StephenMuecke这是一个post,正如ActionLink和api中所声明的那样。您的右侧-刚刚看到了
Ajax.ActionLink
,并假设它是一个GET:)@DavidL我知道cshtml工作得更好,但我们使用的一些第三方控件仅适用于aspx视图。
<% foreach (var thread in Model.threads) { %>
    <tr id= "<%: thread.ForumId %>">
        <td><%: thread.Title %></td>
        <td><%: Ajax.ActionLink("Unsubscribe", "ToggleForumAlertFromList",
                    new { id = thread.ForumId },
                    new AjaxOptions { HttpMethod = "POST", 
                        UpdateTargetId = "none", 
                        OnSuccess = "removeItem('thread.ForumId')"
                    new { ID = "togglealertlink" })%>
        </td> 
    </tr>
<% } %> 

function removeItem(itemId) {
    $("#" + itemId).remove();
}