C# MVC 5 BeginCollectionItem从页面中删除项

C# MVC 5 BeginCollectionItem从页面中删除项,c#,razor,asp.net-mvc-5,C#,Razor,Asp.net Mvc 5,我正在尝试从下面创建的列表中删除项目。该功能的添加部分工作正常 当我在部分页面的onclick事件中指定一个事件时,我得到一个javascript错误。“'Function Name'未定义。”仔细查看,我认为如果jquery正常工作,则不需要onclick属性。然而,即使在更新它以使用最新版本的JQuery之后,它也没有检测到一个点击事件,或者至少它没有被触发 主视图仅显示相关部分 <table id="pastSchoolContainer"> <t

我正在尝试从下面创建的列表中删除项目。该功能的添加部分工作正常

当我在部分页面的onclick事件中指定一个事件时,我得到一个javascript错误。“'Function Name'未定义。”仔细查看,我认为如果jquery正常工作,则不需要onclick属性。然而,即使在更新它以使用最新版本的JQuery之后,它也没有检测到一个点击事件,或者至少它没有被触发

主视图仅显示相关部分

    <table id="pastSchoolContainer">
        <tr>
            <td>
                <input type="button" id="addPastSchool" name="addPastSchool" value="Add School" />
            </td>
        </tr>
        @foreach (var school in Model.SchoolsAttended)
        {
            Html.RenderPartial("_SchoolRemovablePartial", school, new ViewDataDictionary(ViewData)
            {
                TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "SchoolsAttended" }
            });
        }
    </table>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")

    <script type="text/javascript">
        $(document).ready(function () {
            $("#addPastSchool").click(function () {
                $.ajax({
                    async: false,
                    url: '/Student/AddPastSchool',
                }).success(function (partialView) {
                    $("#pastSchoolContainer").append(partialView);
                    return;
                });
            });
            return;
        });

        $("#addPastSchool").on("click", ".deleteRow", function () {
            $(this).parents("#pastSchool:first").remove();
            return false;
        });
    </script>
}

@foreach(模型中的var学校。学校)
{
Html.RenderPartial(“_SchoolRemovablePartial”),学校,新ViewDataDictionary(ViewData)
{
TemplateInfo=新的TemplateInfo{HtmlFieldPrefix=“SchoolsAtTrend”}
});
}
@节脚本{
@Scripts.Render(“~/bundles/jqueryval”)
$(文档).ready(函数(){
$(“#添加过去学校”)。单击(函数(){
$.ajax({
async:false,
url:“/Student/AddPastSchool”,
}).成功(功能(partialView){
$(“#pastSchoolContainer”).append(partialView);
返回;
});
});
返回;
});
$(#addPastSchool”)。在(“单击”,“删除行”,函数(){
$(this).parents(#pastSchool:first”).remove();
返回false;
});
}
\u学校可移除部分

@model ScholarSponsor.Models.SchoolModel
@using ScholarSponsor.Helper

@using (Html.BeginCollectionItem("pastSchool"))
{
    <tr id="pastSchool">
        <td>
            @Html.EditorForModel()
            <br />
            @*<a href="#" id="deleteRow" class="deleteRow" onclick="deleteFunction()">Delete</a>*@
            <input type="button" class="deleteRow" value="Remove School" onclick="remove()" />
        </td>
    </tr>
}
@model ScholarSponsor.Models.SchoolModel
@using ScholarSponsor.Helper

@using (Html.BeginCollectionItem("pastSchool"))
{
    <tr class="pastSchool">
        <td>
            @Html.EditorForModel()
            <br />
            <input type="button" class="deleteRow" value="Remove School" />
        </td>
    </tr>
}
@model ScholarSponsor.Models.SchoolModel
@使用ScholarSponsor.Helper
@使用(Html.BeginCollectionItem(“pastSchool”))
{
@Html.EditorForModel()

@**@ }
扩展Stephen的答案删除函数需要位于文档准备就绪时运行的函数中。此外,按钮不应具有onclick属性

相关的代码部分如下所示

主视图

    <table id="pastSchoolContainer">
        <tr>
            <td>
                <input type="button" id="addPastSchool" name="addPastSchool" value="Add School" />
            </td>
        </tr>
        @foreach (var school in Model.SchoolsAttended)
        {
            Html.RenderPartial("_SchoolRemovablePartial", school, new ViewDataDictionary(ViewData)
            {
                TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "SchoolsAttended" }
            });
        }
    </table>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")

    <script type="text/javascript">
        $(document).ready(function () {
            $("#addPastSchool").click(function () {
                $.ajax({
                    async: false,
                    url: '/Student/AddPastSchool',
                }).success(function (partialView) {
                    $("#pastSchoolContainer").append(partialView);
                    return;
                });
            });

            $("#pastSchoolContainer").on("click", ".deleteRow", function () {
                $(this).closest(".pastSchool").remove();
                return;
            });
        });
    </script>
}

@foreach(模型中的var学校。学校)
{
Html.RenderPartial(“_SchoolRemovablePartial”),学校,新ViewDataDictionary(ViewData)
{
TemplateInfo=新的TemplateInfo{HtmlFieldPrefix=“SchoolsAtTrend”}
});
}
@节脚本{
@Scripts.Render(“~/bundles/jqueryval”)
$(文档).ready(函数(){
$(“#添加过去学校”)。单击(函数(){
$.ajax({
async:false,
url:“/Student/AddPastSchool”,
}).成功(功能(partialView){
$(“#pastSchoolContainer”).append(partialView);
返回;
});
});
$(“#pastSchoolContainer”)。在(“单击”,“删除行”,函数(){
$(this).closest(“.pastSchool”).remove();
返回;
});
});
}
\u学校可移除部分

@model ScholarSponsor.Models.SchoolModel
@using ScholarSponsor.Helper

@using (Html.BeginCollectionItem("pastSchool"))
{
    <tr id="pastSchool">
        <td>
            @Html.EditorForModel()
            <br />
            @*<a href="#" id="deleteRow" class="deleteRow" onclick="deleteFunction()">Delete</a>*@
            <input type="button" class="deleteRow" value="Remove School" onclick="remove()" />
        </td>
    </tr>
}
@model ScholarSponsor.Models.SchoolModel
@using ScholarSponsor.Helper

@using (Html.BeginCollectionItem("pastSchool"))
{
    <tr class="pastSchool">
        <td>
            @Html.EditorForModel()
            <br />
            <input type="button" class="deleteRow" value="Remove School" />
        </td>
    </tr>
}
@model ScholarSponsor.Models.SchoolModel
@使用ScholarSponsor.Helper
@使用(Html.BeginCollectionItem(“pastSchool”))
{
@Html.EditorForModel()

}
函数在哪里?@javascript函数都在操作的主页面上。我可以肯定的是,当我将
$(“#pastSchoolContainer”).on(…)
函数放在
$(document.ready()
中时,它开始工作了。我怀疑它与我正在使用的JQuery版本JQuery-2.1.4有关,但可能与MVC5有关。