无法从 asp.net MVC 中的视图运行 JavaScript

Posted

技术标签:

【中文标题】无法从 asp.net MVC 中的视图运行 JavaScript【英文标题】:Cant run JavaScript from view in asp.net MVC 【发布时间】:2018-06-08 10:19:12 【问题描述】:

我想从视图中运行 javascript/jQuery,但没有显示任何内容。我的代码工作和数据记录在数据库中,但不知道为什么 JavaScript/jQuery 不起作用

我的代码是:

操作代码:

[HttpPost]
    public ActionResult Register(User user)
    
        UserRepository blUser = new UserRepository();
        if (ModelState.IsValid)
        
            if (blUser.Add(user))
            
                return Json(new JsonData()  Success = true );// return "Success":true
            
            else
            
                return Json(new JsonData()  Success = false ); // return "Success":false
            
        
        else
        
            return Json(new JsonData()  Success = false ); // return "Success":false
        

并查看代码:

@section Scripts 

@Scripts.Render("~/bundles/jqueryval")
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script>
    $(document).ready(function (e) 
        e.preventDefault();
        $("#reg-btn").click(function () 
            $.ajax(
                type: "Post",
                url: "/Home/Register",
                data: null,
                dataTpe: "Json",
                success: function (result) 
                    if (result.Success == true) 
                        alert("success");
                    
                ,
                error: function () 
                    alert("error");
                
            );
        );
    );
</script>

按下提交按钮时没有任何反应,只是数据库中的数据记录......如果我在视图中删除了此行代码,则在新页面中显示““Success”:true”:

<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>

如果我在控制器中更改了返回,仍然没有工作

return JavaScript("alert('success')"); // again show string "alert('success')" in new page if above line code removed

还有局部视图...

哪个 JavaScript 参考文件添加到我的项目中?默认由 Visual Studio 2015 / MVC 4 + jquery.unobtrusive-ajax.min.js 创建

ty

【问题讨论】:

e.preventDefault() 应该在点击事件处理程序中。 【参考方案1】:

您的e.preventDefault() 位置错误,很可能在开发工具控制台中抛出错误

改变

$(document).ready(function (e) 
    e.preventDefault();
    $("#reg-btn").click(function () 
       ....

$(document).ready(function ()         
    $("#reg-btn").click(function () 
       e.preventDefault();
       ....

【讨论】:

【参考方案2】:

我找到了解决问题的方法。 就在Ajax.BeginForm 方法中,我将OnSuccessOnFailure 属性添加到AjaxOptions ...并在脚本部分中为这两个函数定义了两个函数

@using (Ajax.BeginForm("Register",new AjaxOptions 
    OnSuccess = "OnSuccess",
    OnFailure = "OnFailure"
))

在脚本部分

<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script type="text/javascript">
    function OnSuccess(response)   
            alert("done");
    
    function OnFailure(response) 
            alert("error");    
    
</script>

我希望这个答案对以后的其他人有所帮助

【讨论】:

以上是关于无法从 asp.net MVC 中的视图运行 JavaScript的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 3 无法识别 .cshtml 视图文件

无法在 ASP.NET MVC 5 中从视图到控制器获取 Select2 标记值

从 ASP.Net MVC 视图访问应用程序设置

asp.net mvc 从视图中的文本框获取数据返回存储过程以编辑记录

ASP.Net MVC 将数据从视图传递到不同文件夹中的控制器

asp.net mvc c# - 是不是可以从 CodeBehind 中的模型访问视图中文本框的值?