jquery - 从ASP.NET MVC 4 Razor的 Controller 返回JavaScript调用

标签 jquery asp.net-mvc-4 razor error-handling callback

我想处理我的ASP.NET MVC 4项目中的一些错误。早些时候我在开发WebForms应用程序,并使用了Page.ClientScript.RegisterClientScriptBlock,但是MVC!= WebForms及其服务器控件,回发等...所以我有些困惑。

当然,我可以使用return Json(...)这样的smth从Controller返回JSON响应,但是请稍候。

我有一个观点。它具有确切的标记。我的View如何识别我必须从jQuery +引导代码中调用的模式框?

首先,我想使用GET参数来处理查询字符串。

如果/Index/UserNotExist->比用显示自定义模态框调用jQuery函数

否则,如果调用URL-> Than,则调用jQuery函数以显示相同的模式框,但其中包含其他文本。

我尝试使用一些代码来处理当前位置,但是失败了(很奇怪,某些jQuery脚本的脚本块结尾处运行良好,但确切地说该脚本甚至没有触发)。

然后,我想到了cookie,将临时数据写入cookie并进行简单检查。

但是在WebForms中,这样的 checkin 代码if (Request.Cookies["error"] != null运行良好,MVC甚至不接受这样的检查,它总是会产生异常。

我有点累,想听听您的建议。

我究竟做错了什么?

谢谢

最佳答案

当我不使用ajax消耗 Controller 的操作时,将错误从服务器带到客户端的方法是使用TempData

我通常会在其中放置一个基本 Controller ,再加上其他所有 Controller 通用的管道。

所以这个方法

    protected void AddError(string message, string header = null)
    {
        TempData[Constants.ErrorKey] = new ViewMessage
        {
            Type = eMessageType.Error,
            Header = header,
            Content = message
        };
    }

将错误消息添加到TempData。

在我的_Layout.cshtml中,我使用 bootstrap 的警报来显示错误:
@if (TempData[Constants.ErrorKey] != null)
{            
    var error = TempData[Constants.ErrorKey] as ViewMessage;
    <div class="alert alert-block alert-error fade in">
        <a class="close" data-dismiss="alert" href="#">&times;</a>
        <br />
        <h4 class="alert-heading">@error.Header:</h4>
        <p>@error.Content</p>
        <br />
    </div>
    <br />
}

因此,任何时候在任何 Controller 中调用 Action 都会产生业务逻辑错误,就会出现带有错误内容的警报。

实际上,您可以结合使用 Action 过滤器来处理未处理的异常,并且可以根据需要进行复杂设置,但这是基本思想。

当然,您也可以使用Session,但是TempData更合适,因为使用它们后会丢弃这些值。

另一方面,如果您正在使用ajax与您的操作进行交互,那么它就是纯客户端脚本和dom操作。

关于jquery - 从ASP.NET MVC 4 Razor的 Controller 返回JavaScript调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17300692/

相关文章:

c# - MVC5 Razor html.dropdownlistfor 当值在数组中时设置选择

jquery - 如何禁用只读字段上的 jquery 验证?

javascript - 使用 JavaScript 在服务器上保存文本文件

jquery animate - 如果另一个动画开始则停止动画完成

c# - "Cannot redirect after HTTP headers have been sent."返回带有 HttpStatusCode.Unauthorized 的 HttpResponseMessage 时

javascript - 我希望在 Razor 函数中调用 JS 函数

javascript - 具有 "computed"URL 的 anchor

c# - Razor 显示属性名称而不是值

c# - MVC Razor 二级级联列表框不会过滤

c# - MVC4 复杂类型模型在发布后为空