无法从 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
方法中,我将OnSuccess
和OnFailure
属性添加到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 从视图中的文本框获取数据返回存储过程以编辑记录