在@ Html.ActionLink中没有调用Javascript

时间:2012-07-28 13:02:13

标签: javascript jquery asp.net-mvc-3 razor

我有以下javascript test.js文件:

$("#addItem").click(function () {
    alert("yup");
    $.ajax({
        url: this.href,
        cache: false,
        success: function (html) { $("#bandRows").append(html); }
    });
    return false;
});

我想用它将一些HTML注入到页面上的“bandRows”div中。我在MVC 3应用程序中使用Razor,如下所示:

索引视图,其中包含的链接在点击时会注入部分视图HTML:

@model IEnumerable<TariffBand>

        <script type="text/javascript" src="=@Url.Content("~/Scripts/jquery-1.3.2.js")"></script>
        <script type="text/javascript" src="=@Url.Content("~/Scripts/MicrosoftAjax.js")"></script>
        <script type="text/javascript" src="=@Url.Content("~/Scripts/test.js")"></script>

    <h2>Index</h2>

    @using (Html.BeginForm())
    {
    <div id="bandRows">
        @foreach (var band in Model)
        {
            Html.RenderPartial("BandEditorRow", band);
        }
    </div>

    @Html.ActionLink("Add band...", "Add", null, new { id = "addItem" })

    <input type="submit" value = "Done" />

目前,当我点击链接时,没有调用javascript - 警报框没有显示 - 链接只是导航到“添加”局部视图而不是将其注入'bandRows'div

谁能告诉我为什么?我之前没有使用过javascript,所以我显然做了一些愚蠢的事情,但是在我的生活中无法解决这个问题。

编辑 - 我修改了.js文件,因此处理程序是单击而不是onclick。我也试过修改html助手:

@Html.ActionLink("add band...", "Add", null, new { onclick = "addItem" }但仍然没有骰子。

由于 大卫

1 个答案:

答案 0 :(得分:2)

你有

$("#addItem").onclick(function () 

没有像$.onclick那样的内容。

这将是

$("#addItem").click(function () 

修改

$().ajax({应为$.ajax({

并且整个代码应该在document.ready()之内

$(document).ready(function(){
   $("#addItem").click(function (){
   .
   .
   .
});

编辑 - 2

正如您已经承认自己是javascript世界的新手,我正在提供详细代码:

<script type="text/javascript" src="=@Url.Content("~/Scripts/MicrosoftAjax.js")"></script>
@* <script type="text/javascript" src="=@Url.Content("~/Scripts/test.js")"></script> *@

<h2>Index</h2>

<script type="text/javascript">
    $(document).ready(function(){
        $("#addItem").click(function (){
            alert("yup");
            $.ajax({
                url: this.href,
                cache: false,
                success: function (html) { 
                    $("#bandRows").append(html); 
                }
            });
            return false;
        };  
    });
</script>

document ready是您在启动jQuery时需要学习的非常初步的事情。 Thisready事件的API文档。 here是了解document ready的教程。