繁体   English   中英

为什么javascript在共享/部分视图的asp.net mvc视图中不起作用

[英]Why is javascript not working in asp.net mvc view with shared/partial view

我尝试将以下脚本添加到“用户”页面的Index.cshtml视图的末尾,但未被调用。 我试过将它包装在$(document).ready(function () {等,但似乎没有任何区别。

<script>
    $("#UserSearch").click(function () {
        $("#usernameSearchString").text("newText");
    });
</script>

以下是Index.cshtml视图:

@model IEnumerable<CCM.Models.User>

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

@{
    ViewBag.Title = "Users";
    ViewBag.CurrentSort = "name_desc";
    ViewBag.NameSortParm = "name_desc";
    ViewBag.DateSortParm = "date_desc";
}

<p class="h2">Manage Users</p>
<input type="text" id="usernameSearchString" placeholder = "Find by user name" class="form-input" />
<a id="UserSearch" class="CMsubmit">Search</a>
<br />
<br />
<div id="usersTable" style="overflow-x:auto;">
    @Html.Partial("_User", Model)
</div>
<script>
    $("#UserSearch").click(function () {
        $("#usernameSearchString").text("newText");
    });
</script>

当页面使用共享视图进行导航时,JQuery引用已保存在_Layout.cshtml共享视图中,如下所示。 我发现向我的Index.cshtml视图添加JQuery引用导致JQuery函数触发两次。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - CCM</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/modernizr")
</head>
<body>
...navigation...
</body>
</html>

还调用部分视图_User.cshtml来填充表,该部分视图不包含JQuery引用,并且不使用javascript。

上面的脚本只是一个示例,Index.cshtml视图中需要javascript / JQuery,以便我可以将搜索过滤器字符串传递给Controller中的函数,以便使用过滤后的结果更新部分视图。

但是,我的问题是如何使内联javascript / JQuery在Index.cshtml视图上完全起作用?

由于UserSearch是链接,因此我认为问题在于您的脚本有效,但是单击也会触发该链接的默认行为,因此您不会注意到您的自定义脚本有效。 您可以通过在脚本中放置调试断点来确认这一点,并查看单击后页面执行是否在此处停止。

因此,您需要防止默认行为。 这对于jQuery是相当标准的:

$("#UserSearch").click(function (event) {
    event.preventDefault();
    $("#usernameSearchString").val("newText");
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM