如何将整套模型附加到formdata并在MVC中获取它如何通过formdata传递整个模型对象并将其转换为控制器中的模型类型?以下是我尝试过的!JavaScript部分:model = {
EventFromDate: fromDate,
EventToDate: toDate,
ImageUrl: imgUrl,
HotNewsDesc: $("#txthtDescription").val().trim(),
};formdata.append("model",model);然后通过AJAX传递它,它将是一个字符串,如果我检查Request.Form["model"]结果的值将是相同的,那就是它将作为字符串接收并且值将是"[object object]"有没有办法通过formdata传递模型并在控制器中接收它?
3 回答
aluckdog
TA贡献1847条经验 获得超7个赞
如果您的视图基于模型并且您已在<form>标记内生成控件,则可以将模型序列化为FormData使用
var formdata = new FormData($('form').get(0));这还包括使用生成的任何文件 <input type="file" name="myImage" .../>
然后用它回发
$.ajax({
url: '@Url.Action("YourActionName", "YourControllerName")',
type: 'POST',
data: formdata,
processData: false,
contentType: false, });并在你的控制器
[HttpPost]public ActionResult YourActionName(YourModelType model){}或(如果您的模型不包含属性HttpPostedFileBase)
[HttpPost]public ActionResult YourActionName(YourModelType model, HttpPostedFileBase myImage){}如果要添加表单中没有的其他信息,可以使用附加信息
formdata.append('someProperty', 'SomeValue');
慕神8447489
TA贡献1780条经验 获得超1个赞
在视图方面,如果您使用的是ajax,
$('#button_Id').on('click', function(){
var Datas=JSON.stringify($('form').serialize());
$.ajax({
type: "POST",
contentType: "application/x-www-form-urlencoded; charset=utf-8",
url: '@Url.Action("ActionName","ControllerName")',
data:Datas,
cache: false,
dataType: 'JSON',
async: true,
success: function (data) {
},
});
});在控制器方面,
[HttpPost]
public ActionResult ActionName(ModelName modelObj)
{
//Some code here
}添加回答
举报
0/150
提交
取消
