После этого учебника У меня есть вызов Ajax, который добавляет строку в список, он работает правильно, добавляя новое частичное представление в список существующих элементов.
@model List<FTD.Models.Rate>
@using (Html.BeginForm("EditRates","Maintenance"))
{
<div id="editorRows">
@foreach (FTD.Models.Rate _rate in Model)
{
Html.RenderPartial("_Rate",_rate);
}
</div>
@Html.ActionLink("Add Another", "BlankEditorRow", null, new { id = "addItem" })
<br />
<input id="Edit" name="submit" type="submit" value="Edit" />
}
<script type="text/javascript">
$("#addItem").click(function () {
$.ajax({
url: this.href,
cache: false,
success: function (html) { $("#editorRows").append(html); }
});
return false;
</script>
Я хочу ограничить список до 5 строк. Я попытался обернуть if, если вокруг вызова $ .ajax, однако это приводит к отображению только этого, вместо добавления нового партиала к текущей странице, я перенаправлен на BlankEditorRow.
$("#addItem").click(function () {
if ($('.editorRow').length < 5) {
$.ajax({
url: this.href,
cache: false,
success: function (html) { $("#editorRows").append(html); }
});
}
return false;
});
Действие контроллера
public ActionResult BlankEditorRow()
{
if (Request.IsAjaxRequest())
return PartialView("_Rate", new Rate());
return View("_Rate", new Rate());
}
_Rate Partial
@model FTD.Models.Rate
<div class="editorRow">
@Html.TextBoxFor(m => Model.Date, new { @class = "date" })
@Html.ValidationMessageFor(m => Model.Date)
@Html.TextBoxFor(m => Model.InterestRate)
@Html.ValidationMessageFor(m => Model.InterestRate)
<a href="#" class="deleteRow">delete</a>
</div>