0
我有一個包含多個不同選項卡的表單。主選項卡包含有關此人的所有主要信息,其餘選項卡由多個列表組成。ajax插入後,加載所有插入列表,無需重新加載頁面
其中一個選項卡包含與該人相關的所有評論的列表。該選項卡還有一個允許用戶插入新評論的按鈕。
我所做的是做一個ajax調用並加載創建視圖,用視圖替換列表。像這樣的東西。
$("#btnNewAnnotation").click(function (e) {
$.ajax({
url: "/Annotations/Create",
cache: false,
data: { personId: $("#personId").val(), withouLayout: true },
type: "GET",
success: function (data, textStatus, jqXHR) {
alert("alert of success!!");
$("#annotationContent").html(data);
},
error: function (statusText, errorText) {
alert(errorText);
}
});
});
現在它做什麼它傾倒的局部視圖,允許我把新的HTML的annotationContent格
public ActionResult Create(string personId, string withouLayout)
{
ViewBag.AnnotationTypeId = new SelectList(db.annotationtypes, "AnnotationTypeId", "Name");
annotations annotation = new annotations();
annotation.PersonId = personid;
return PartialView(annotation);
}
控制器這一切工作真的很好,沒有任何問題。我遇到的問題是在數據庫中插入註釋之後。我想要做的就是重裝再次與所有評論列表,但只更新DIV annotationContent
我有以下的AJAX
$("#createAnnotationForm").on("submit", function() {
e.preventDefault();
$.ajax({
url: "/Annotations/Create",
cache: false,
data: $(this).serialize(),
dataType: "json",
type: "POST",
success: function (data, textStatus) {
//This alert never gets Called!!
alert("ajax insert success");
},
error: function (statusText, errorText) {
alert('Error: ' + errorText)
}
});
});
我這樣做的原因是因爲有多個形式該視圖和我只想提交此表單。我的控制器具有以下
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(annotations annotations)
{
try
{
db.annotations.Add(annotations);
db.SaveChanges();
}
catch(Exception ex)
{
}
return PartialView(db.annotations);
}
當我提交表單,我得到的錯誤
The model item passed into the dictionary is of type 'System.Data.Entity.DbSet`1[RecruitmentWeb.Models.annotations]', but this dictionary requires a model item of type 'RecruitmentWeb.Models.annotations'.
我明白爲什麼我得到這個錯誤,但我不知道我該怎麼重裝我的評論列表而無需重新加載整個頁面。任何人有任何想法?