在tutorial之后,我有一个向列表添加行的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行。我试图在$ .ajax调用周围包装一个if但是这导致只显示而不是向当前页面添加一个新部分我被重定向到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>
答案 0 :(得分:1)
我相信你想要$('.editorRow').length < 5
- 即.length
属性,而不是.length()
;
答案 1 :(得分:1)
您应该在此行的JavaScript控制台中看到错误:
if ($('.editorRow').length() < 5) {
length
是属性,而不是函数。所以:
if ($('.editorRow').length < 5) {
为了调试这样的事情,没有什么比打扰using a debugger,打开控制台,确保浏览器设置为告诉你有关错误等等。这些工具可供使用。