【发布时间】:2019-07-12 01:08:52
【问题描述】:
我有这个结构如下的 ViewModel:
public class SendNewMessageViewModel
{
public GroupDropdownListViewModel Groups { get; set; }
[Required]
public MessageDropdownListViewModel Templates { get; set; }
public string ContactId { get; set; }
[Display(Name ="Contact Name")]
public string ContactName { get; set; }
[Display(Name = "Message Content")]
public string MessageContent { get; set; }
}
我的功能
[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult Send(SendNewMessageViewModel Input)
{
return null;
}
我正在尝试将数据传递给我的函数,该函数将此视图模型作为输入。但是,当我调试它时,所有输入都是空的。但是,在我的 Request.Form["ContactName"] 等中,有数据。
我尝试在输入中添加 [FromBody],但只收到 415 错误。
这就是我将数据传递到服务器的方式:
$("#dropzone").dropzone({
url: "@Url.Action("Send", "Messages", new { area = "Action" })",
autoProcessQueue: false,
addRemoveLinks: true,
maxFiles: 1,
uploadMultiple: false,
parallelUploads: 1,
init: function () {
var submitButton = document.querySelector("#submit");
var token = $('input[name="__RequestVerificationToken"]').val();
var wrapperThis = this;
submitButton.addEventListener("click", function (e) {
wrapperThis.processQueue();
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
return false;
});
this.on('sending', function (data, xhr, formData) {
formData.append("__RequestVerificationToken", token);
formData.append("@Html.IdFor(x => x.ContactId)", $("#@Html.IdFor(x => x.ContactId)").val());
formData.append("@Html.IdFor(x => x.ContactName)", $("#@Html.IdFor(x => x.ContactName)").val());
formData.append("@Html.IdFor(x => x.Groups.GroupId)", $("#@Html.IdFor(x => x.Groups.GroupId)").val());
formData.append("@Html.IdFor(x => x.Templates.MessageId)", $("#@Html.IdFor(x => x.Templates.MessageId)").val());
});;
this.on('error', function (file, message) {
wrapperThis.disable();
});
this.on('success', function (file,message) {
$(".dz-remove").hide();
wrapperThis.disable();
$(document).off("submit");
});
}
});
【问题讨论】:
-
你试过用
[FromForm]吗? -
尝试按F12查看网络中Request Headers的Form-data。
标签: javascript jquery asp.net asp.net-mvc asp.net-core