从控制器返回后是否可以使用preventDefault?的RSS

问题描述

从控制器返回后是否可以使用preventDefault()?

我想执行以下操作,当调用@ Html.ActionLink时,它将验证控制器,并根据验证,它调用视图,或者如果失败,则返回带有链接的json从另一个动作中提取,然后我以ajax处理该动作,并以模态形式显示结果。

我以前使用@ Ajax.Options,但遇到以下问题,它将始终返回视图值而不是视图,我将不得不使用UpdateTargetId在某些div中更新视图。但是我想转到下一页,但是后来我认为我可以使用window.location.href = ref;。叫我动作本身,但是这样,我将两次调用该动作(第一次在@ajax调用中,第二次在window.location中)

实际代码示例:

查看索引: 使用GridViewPartial进行索引,调用操作详细信息

                @Html.ActionLink("\xA0","Details",new { id = c.keyvalue },new { @class = "Lato-Bold buttoninfo test2" }).ToHtmlString(),

控制器详细信息:

    public ActionResult Details(int? id)
        bool erro = false;
        if (erro)
        {
            var redirectUrl = new UrlHelper(Request.RequestContext).Action("ForbiddenAccesspop","_Login");
            return Json(new { modal = "true",Url = redirectUrl},JsonRequestBehavior.AllowGet);

        }
        else
        {
            return View(item);
        }
        

JAVASCRIPT:

$(function () {
$(document).on('click','.test2',function (e) {
    $.ajax({
        type: 'POST',url: this.href,success: function (data) {
        //e.preventDefault();  EXAMPLE HERE,BUT NOT WORKING...
                if (data.modal === "true") {
                    $.ajax({
                        url: data.Url,success: function (result) {
                            $("#ModalContent").html(result);
                            $('#ModalShow').modal('show');
                        }
                    });
                }
                else {
                   //window.location.href = ref;
                }
        }
    });
});})

方法是这样的:

控制器:

public ActionResult Details(int? id)
try {
           return PartialView(item);
}
catch {
        return RedirectToAction("ForbiddenAccesspop","_Login",new { ActualController = actualController,ActualAction = actualAction });

    }

==================

查看_Layout:

    <div id="main">
        @RenderBody()
    </div>

==================

带有GridviewPartial的索引:

@Ajax.ActionLink("\xA0",new AjaxOptions { HttpMethod = "POST",OnSuccess = "OnSuccessModal(data,this)",OnFailure="OnFailureModal(data,UpdateTargetId = "main"},new { @class = "Lato-Bold buttoninfo ajaxhistory" }).ToHtmlString(),

==================

JavaScript:

function OnFailureModal(result,ref) {
    $.ajax({
        url: result.Url,success: function (data) {
            $("#ModalContent").html(data);
            $('#ModalShow').modal('show');
        }
    });
}

function OnSuccessModal(result,ref) {
        window.history.pushState("stateObj","new page",ref);
}


$(document).ready(function () {
          $(".ajaxhistory).click(function() {
            var href = $(this).attr("href");
            if (href.indexOf("javascript") >= 0)
                return;
            history.pushState(null,$(this).html,href);
        });
    });

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...