Я использую сообщение ajax в своем проекте, даже если часть модели с изображением и текстом считается действительной в модели, дополнительные вложения равны нулю, а в части ошибки число ошибок равно количеству вложений, которые я отправляю бэкэнду, и кажется, как объект File ModelState.values [8] Value.AttemptedValue = [файл объекта], [файл объекта], [файл объекта], [файл объекта], [файл объекта] .... и т. д.
мой контроллер
[HttpPost]
public ActionResult CreateTheIdea(OneIdeaModel model)
{
string imgResult = "";
string attachmentResult = "OK";
if (ModelState.IsValid)
{
}
}
мой взгляд
function sendBasicIdeaInfo() {
var totalFiles = document.getElementById("coverImage").files.length;
var covImg = document.getElementById("coverImage").files[0];
newForm.append("title", $("#title").val());
newForm.append("coverImage", covImg);
newForm.append("description", encodeURI($("#description").val()));
newForm.append("whyThis", encodeURI($("#whyThis").val()));
newForm.append("detail", encodeURI($("#detail").val()));
newForm.append("ideaType", encodeURI(ideaType));
newForm.append("contentId", encodeURI(contentId));
newForm.append("status", encodeURI(recordType));
var totalFiles = document.getElementById("uploadBtn").files.length;
console.log(totalFiles);
if (totalFiles > 0) {
for (var i = 0; i < totalFiles; i++) {
files[i] = document.getElementById("uploadBtn").files[i];
//console.log(files["name"]);
}
newForm.append("attachment", files);
newForm.append("contentType", "@ContentTypeEnum.IDEA.ToString()");
//newForm.append("contentId", newIdeaId);
}
$.ajax({
type: 'post',
url: '/@activeLanguage/Idea/CreateTheIdea',
data: newForm,
dataType: 'json',
contentType: false,
processData: false,
success: function (response) {
if (Number.isInteger(parseInt(response))) {
complete();
}
else
{
openVSnackBar("@Resources.errAnError", "error");
}
},
error: function (error) {
openVSnackBar("@Resources.errAnError", "error");
}
});
}
моя модель
public class OneIdeaModel
{
//Idea text part
public int id { get; set; }
public string title { get; set; }
public string description { get; set; }
public string whyThis { get; set; }
public string detail { get; set; }
public string ideaType { get; set; }
public string contentId { get; set; }
public string status { get; set; }
public int attachmentCount { get; set; }
public string langCode { get; set; }
public int userId { get; set; }
//Idea attachment part
public string contentType { get; set; }
public virtual HttpPostedFileBase[] attachment { get; set; }
public string fileType { get; set; }
public string fileName { get; set; }
//Idea image part
public virtual HttpPostedFileBase thumbImage { get; set; }
public virtual HttpPostedFileBase coverImage { get; set; }
public bool isImageFormatValid(HttpPostedFileBase img)
{
List<string> types = new List<string>() { "jpeg", "jpg", "png" };
if (types.Contains(img.FileName.Split('.')[img.FileName.Split('.').Length - 1].ToLower())) return true;
else return false;
}
public bool isAttachmentFormatValid(HttpPostedFileBase attachment)
{
List<string> types = new List<string>() { "application/pdf", "text/plain", "application/vnd.ms-excel.sheet.binary.macroenabled.12", "application/vnd.ms-excel.addin.macroenabled.12", "application/vnd.ms-excel", "application/msword" };
if (types.Contains(attachment.ContentType)) return true;
else return false;
}
}
Как я уже сказал, все ценности, кроме вложений. Это приходит ноль, почему. Если вы можете помочь, я был бы признателен, что
полезная нагрузка
------WebKitFormBoundaryJBAmObnu25KFXIzw
Content-Disposition: form-data; name="title"
123
------WebKitFormBoundaryJBAmObnu25KFXIzw
Content-Disposition: form-data; name="coverImage";
filename="35205568_10156471428459494_5451669252295622656_n.jpg"
Content-Type: image/jpeg
------WebKitFormBoundaryJBAmObnu25KFXIzw
Content-Disposition: form-data; name="description"
123
------WebKitFormBoundaryJBAmObnu25KFXIzw
Content-Disposition: form-data; name="whyThis"
123
------WebKitFormBoundaryJBAmObnu25KFXIzw
Content-Disposition: form-data; name="detail"
123123123123
------WebKitFormBoundaryJBAmObnu25KFXIzw
Content-Disposition: form-data; name="ideaType"
Category
------WebKitFormBoundaryJBAmObnu25KFXIzw
Content-Disposition: form-data; name="contentId"
0
------WebKitFormBoundaryJBAmObnu25KFXIzw
Content-Disposition: form-data; name="status"
PUBLISHED
------WebKitFormBoundaryJBAmObnu25KFXIzw
Content-Disposition: form-data; name="attachment"
[object File],[object File],[object File]
------WebKitFormBoundaryJBAmObnu25KFXIzw
Content-Disposition: form-data; name="contentType"
IDEA
------WebKitFormBoundaryJBAmObnu25KFXIzw--