我有一些模型類:
public class Research
{
public int Id { get; set; }
public string Title { get; set; }
public string Abstract { get; set; }
public string Body { get; set; }
public string Image { get; set; }
[NotMapped]
public HttpPostedFileWrapper ImageFile { get; set; }
public virtual List<ResearchAuthors> ResearchAuthors { get; set; }
}
public class ResearchAuthors
{
public int Id { get; set; }
public int AuthorId { get; set; }
public int ResearchId { get; set; }
public Research Research { get; set; }
public Author Author { get; set; }
}
這是我如何將資料發送到控制器的 jQuery 代碼
var Research = {
Id: idInput.val(),
Title: titleInput.val(),
Abstract: abstractInput.val(),
ImageFile: imageInput.get(0).files[0],
Body: bodyInput.val()
};
// Research Authors
var ResearchAuthors = [];
$('#authors-tbody tr').each(function () {
var AuthorId = $(this).children('.id-td').text();
var Id = $(this).children('.researchAuthorsId-td').text();
var ResearchAuthor = {
AuthorId: AuthorId,
Id: Id,
ResearchId: idInput.val()
}
ResearchAuthors.push(ResearchAuthor)
});
控制器正在等待這個
public ActionResult Create(SaveResearchViewModel viewModel)
{
return Json(new { success = true, message = "Created Successfully" });
}
該SaveResearchViewModel代碼:
public class SaveResearchViewModel
{
public Research Research { get; set; }
public List<ResearchAuthors> ResearchAuthors { get; set; }
}
我使用過 formdata 但它不起作用,因為 List of ResearchAuthorseven can't stringify 因為有要發送的資料的影像
那么使用所有不同資料型別 [Object, Object.Image, Arr[Object]] 以便在控制器中接收的正確方法是什么?
uj5u.com熱心網友回復:
您可以使用 ajax 將 1 個字串傳遞給 Controller。然后序列化成一個物件。
var Research = {
Id: idInput.val(),
Title: titleInput.val(),
Abstract: abstractInput.val(),
ImageFile: imageInput.get(0).files[0],
Body: bodyInput.val()};
$.ajax({
url:'/Controller/Action',
data: {
strResearch: JSON.stringify(Research)
},
type: 'POST',
dataType: 'json',
success: function(res){
if(res.success)
{
alert(res.message)
}
}
//控制器
public JsonResult Create(string strResearch)
{
SaveResearchViewModel saveResearchViewModel = new SaveResearchViewModel();
JavaScriptSerializer serializer = new JavaScriptSerializer();
Research objResearch = serializer.Deserialize<Research>(strResearch);
//save db
return Json(new { success = true, message = "Created Successfully" });
}
uj5u.com熱心網友回復:
表單資料無法添加物件串列,因此您可以使用 2 ajax 請求第一個 ajax 保存 Research 和 ReseachAuthors 第二個 ajax 保存影像
像這樣
$.ajax({
type: "POST",
dataType: "json",
url: "/Researches/Create",
data: viewModel,
success: function (data) {
if (data.success) {
$.ajax({
url: "/Researches/SaveImage",
method: "POST",
processData: false,
contentType: false,
data: data,
success: function (data) {
if (data.success) {
toastr.success(data.message);
window.location.replace("/Researches/");
}
},
error: function () {
toastr.error("Image Ajax error");
}
})
}
else {
toastr.error(data.message)
}
},
error: function () {
toastr.error("Ajax Error")
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/359826.html
標籤:C# 查询 阿贾克斯 asp.net-mvc 表单数据
