これに似た部分ビューでページの一部を更新しようとしています。「削除」をクリックして部分ビューを削除できます-jqueryはそこで機能しますが、部分ビューの別の行を追加できません。リンクをクリックして「別の行を追加」すると、現在のビューにデータが追加されるのではなく、返された html だけを表示するページに移動します。
これが私の主なビューです:
@model MyApp.ViewModels.ApplicationViewModel
@{
ViewBag.Title = "ApplyToSomething";
}
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"> </script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"> </script>
<script src="@Url.Content("~/Scripts/MyJqueryAjaxFile.js")" type="text/javascript"> </script>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Apply To Something</legend>
<div class="editor-label">
@Html.LabelFor(model => model.LastName)
@Html.DisplayFor(model => model.LastName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.EducationalBackground)
</div>
//
// THIS IS THE SECTION I AM HAVING PROBLEMS WITH
<div id = "editorRows">
@Html.Partial("_EducationalBackground")
<!-- PUT ADDITIONAL PARTIAL VIEWS HERE -->
</div>
@Html.ActionLink("Add another row", "EducationalBackground", null, new {id = "addItem"})
<div class="editor-label">
@Html.LabelFor(model => model.WillingToTravel)
</div>
<div clsas="editor-field">
@Html.EditorFor(model => model.WillingToTravel)
@Html.ValidationMessageFor(model => model.WillingToTravel)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
ここに私の部分的なビューがあります:
@model MyApp.ViewModels.ApplicationViewModel
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<div class="editorRow">
@Html.EditorFor(model => model.UniversityOrCollege)
@Html.ValidationMessageFor(model => model.UniversityOrCollege)
<p>
<a href="#" class="deleteRow">delete</a>
</p>
</div>
}
ここに私の.jsファイルがあります:
$("#addItem").click(function () {
$.ajax({
url: this.href,
cache: false,
success: function (html) { $("#editorRows").append(html); }
});
return false;
});
$("a.deleteRow").live("click", function () {
$(this).parents("div.editorRow:first").remove();
return false;
});
これが私のコントローラーアクションです:
public ActionResult Apply()
{
// I generate data for model. . .
return View(model);
}
public PartialViewResult EducationalBackground()
{
return PartialView("_EducationalBackground", new ApplicationViewModel());
}
ビューの Html の ViewSource の正確なコピー/貼り付けは次のとおりです (「MyApp」などではなく、実際の値がリストされていることに注意してください)。
<div class="editor-label">
<label for="EducationalBackground">EducationalBackground</label>
</div>
<div id = "editorRows">
<h2>_EducationalBackground</h2>
<form action="/InstructorApplication/ApplyToBecomeInstructor" method="post"> <div class="editorRow">
<input class="text-box single-line" id="UniversityOrCollege" name="UniversityOrCollege" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="UniversityOrCollege" data-valmsg-replace="true"></span>
<p>
<!--<a href="/InstructorApplication/%23?class=deleteRow">deleteRow</a>-->
<a href="#" class="deleteRow">delete</a>
</p>
</div>
</form>
<!-- PUT PARTIAL VIEWS HERE -->
</div>
<a href="/InstructorApplication/EducationalBackground" id="addItem">Add another row</a>
「別の行を追加」へのリンクが、現在のビューにデータを追加するのではなく、別のビューに移動するのはなぜですか?