MVC-前台调用后台action 传递upload file 参数问题

在后台获取upload file 数量的时候发现count一直为0,经检查发现了问题 ,代码如下:

前台:

var data = $("#DetailForm").serialize();

$.ajax({
url: ‘@Url.Action("SaveRequest", "RegistrationRequest")‘,
type: "POST",
dataType: "JSON",
data: data,
cache: false,
processData: false,
success: function (result) {
window.scrollTo(0, 0);
utility.hideMask();
FormSaveSuccess(result);
}
});

后台:

[HttpPost]
public ActionResult SaveRequest(DetailModel model)
{
   if (ModelState.IsValid)
   {

if (model.Type == Codes.VT.ToString() || model.Type == Codes.NT.ToString())
     {
     model.DocumentsList = Utility.BuildDocumentModel(Request.Files, model.DocumentSearchCriteria.ModuleCode,  "", "",  model.DocumentSearchCriteria.FunctionId);

if (model.DocumentsList.Count == 0)
    {
       return Json(new { HasError = true, ErrorMessage = MessageResources._NoUploadFile });
    }

}

}
}

Request.Files 里文件count ==0.

解决这个问题只需要在前台调用action脚本里加上 属性 mimeType: "mutipart/form-data",

$.ajax({
url: ‘@Url.Action("SaveRequest", "RegistrationRequest")‘,
type: "POST",
dataType: "JSON",
data: new FormData(this),

mimeType: "mutipart/form-data",

cache: false,
processData: false,
success: function (result) {
window.scrollTo(0, 0);
utility.hideMask();
FormSaveSuccess(result);
}
});

时间: 2024-10-24 20:04:40

MVC-前台调用后台action 传递upload file 参数问题的相关文章

JS 之 前台调用后台变量和方法

      在我们平时的网站开发过程中,并不是所有的网页都是后台查询出一个DataTable或者List然后绑定到DataGrid上.我们可能还会遇到前台需要后台的某一个变量,或者前台某个显示的地方需要调用一下后台的某一个查询的方法.下面我就给大家列举一个小例子: Asp.Net前台代码: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta ht

LigerUi-js中ajax前台调用后台Json格式转换!(已解决)

LigerUi-js中ajax前台调用后台Json格式转换!(已解决) success: function (data, status) { var aaa = JSON2.stringify(data); alert(aaa ); } LigerUi-js中ajax前台调用后台Json格式转换!(已解决),布布扣,bubuko.com

前台和后台互相传递多维数组

上一篇文章介绍了前台和后台相互传递数组的方法,从客户端传一维数组到服务器可以用jquery的ajax方法直接传递.但如果传递的是多维数组呢? 此时可以借用json的stringify()方法将字符串数组转换为json数组对象传递到后台,后台再使用JSONArray对象的fromObject()方法将其转换为数组即可. 示例: JS代码: $(function(){ var array1 = new Array(); array1.push("A"); array1.push("

.net使用Ajax在前台调用后台方法

/*--------前台JS代码-----------*/ var http_request; function GetAjaxObject(coaInfo) { //根据浏览器的不同来获取XMLHttpRequest对象 if (window.XMLHttpRequest) { // Mozilla, Safari, ... http_request = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE http_re

前台调用后台事件和方法实现小结

在实际开发过程中,我们的HTML元素需要调用后台,而且需要让后台进行复杂运算后再进行数据重新绑定操作,遇到这样的问题怎么办呢?可能有人说在后台创建一个方法,该方法实现绑定数据操作,但是实际呢?结果不尽人意,它没有执行绑定的实现,而只是简单的执行一下方法但是前台无反应,为什么出现这样的情况?原来前台调用后台方法其实只是返回结果,对实现过程及元素组合变化不管不问,它只是关注执行后的结果,不为过程买单,那么有什么方法解决这个问题呢?想想?我们可不可以让前台HTML元素触发ASP.NET按钮来触发事件呢

前台调用后台函数

调用 var b = $ajax("WebApplication1._Default.GetDataSet", ["23"]); js:/*方法全名,参数,类所在的程序集名称(当方法类所在的命名空间不是程序集名称时请传参数来)*/function $ajax(paramMethod, paramValue, paramAssemblyName) {    if (!paramMethod) { Dialog.alert("缺少全名称的方法参数",

Ajax调用后台action返回JSONArray(JSONObject)类型实现jsp中下拉列表的动态显示

一.描述 现在有个jsp页面上有一个所属学校和一个所属班级的下拉列表,只有在选择所属学校后才弹出所属班级列表,所以采用Ajax技术返回一个ArrayList类型的键值对显示在所属班级列表中,效果如图1所示: 二.源代码 1.main.jsp主要源代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@

jsp,OGNL调用后台Action的某方法

用%{}可取出valueStack中的Action,可直接调用其方法. %{testa('key')} 即可调用到action的testa(String s) 方法 但这些都需要结合struts2的标签. 如:<s:property value="%{testa('key')}" /> key是需要传的参数,后台的testa方法的返回值是String类型的,key是值, 例如<s:property value="%{testa(#u.tbPriceGread

Java中前台往后台传多个id参数

1.传字符串的形式,字符串中每个id用 ","  隔开 打印出来如下形式: 前台JS代码 function saveRoleAdd() { var roleNames = $('#roleNames').textbox("getText"); var roleDetail = {}; roleDetail.roleNames = roleNames; roleDetail.roleFunctionCount = 0; roleDetail.roleFunctionL