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