jquery - 如何用另一个 Ajax.ActionLink 替换(或更新)一个 Ajax.ActionLink?

标签 jquery ajax asp.net-mvc actionlink

假设我有一个用户列表:

用户/Index.cshtml

@model IEnumerable<MvcHoist.Models.UserProfileViewModel>

<table>
    @foreach (var user in Model)
    {
        @Html.Partial("_User", user)
    }
</table>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

...并且(使用部分)每个用户旁边是“关注”或“取消关注”链接(视情况而定):

_User.cshtml部分

@model MvcHoist.Models.UserProfileViewModel
<tr>
    <td>
        @if (Model.IsFollowed)
        {
            @Ajax.ActionLink("Unfollow", "Unfollow", new { id = Model.UserProfile.UserId }, new AjaxOptions
               {
                   HttpMethod = "POST"
               })
        }
        else
        {
            @Ajax.ActionLink("Follow", "Follow", new { id = Model.UserProfile.UserId }, new AjaxOptions
               {
                   HttpMethod = "POST"
               })
        }
    </td>
</tr>

在关注操作成功完成后,如何将“关注”Ajax.ActionLink 替换为“取消关注”Ajax.ActionLink? 通过更改 linkText 来使用单个 Ajax.ActionLink actionName 也可以。

这可以纯粹使用 Ajax.ActionLink 来完成(无需深入研究 jQuery)吗?动画化改变会更好。

最佳答案

渲染两个链接,而不是 @if (...) 条件,但使用“display:none;”样式渲染第二个链接。

样式属性可能如下所示:

..., new { style="display:@(Model.IsFollowed ? "block" : "none")" }, ...
..., new { style="display:@(Model.IsFollowed ? "none" : "block")" }, ...

添加一个 OnComplete 处理程序或一点 jQuery(或替代方案)以在成功时切换两个链接。

对于动画,您可以使用 jQuery fadeIn() 和 fadeOut() 函数。

关于jquery - 如何用另一个 Ajax.ActionLink 替换(或更新)一个 Ajax.ActionLink?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19688883/

相关文章:

javascript - 在滚动时,捕获屏幕中的最后一个文本?

jquery - 使用 jQuery 通过动画动态更改背景颜色?

javascript - php脚本echo显示在控制台而不是文本输入中

asp.net - Azure预编译似乎不起作用

javascript - 表单提交后 ASP.net MVC 成功警报

jquery - jQuery 选择器有什么区别?

javascript - 选中/取消选中复选框取决于数据来自数据库

javascript - 多个下拉列表 - onclick 不关闭

javascript - 将所有代码放在 `$(document).ready` 中是否安全?

asp.net-mvc - MVC RedirectToAction 和 XMLHttpRequest 发送