【发布时间】:2013-03-03 18:51:11
【问题描述】:
此代码适用于 FF 和 chrome。在 IE 8 或 9 中,我收到一个 500 错误,指出非空属性为空。
这里是html
<div id="upload_button_div_general" class="fileupload-buttonbar" data-url="/Upload/SomeMethod">
<label class="fileinput-button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary" role="button">
<span class="ui-button-text">
<span>Add Documents...</span>
</span>
<input id="upload_button" type="file" name="postedFiles" multiple="" />
</label>
</div>
<div id="UploadMessage" data-bind="visible: showMessage">
<span>Documents</span>
<ul data-bind="foreach: upload()">
<li>
<a href="#" data-bind="click: $parent.openFile">
<span data-bind="text: $data.fileName"> </span>
</a>
</li>
</ul>
</div>
这里是javascript
function Upload(div, additionalParams, successFunc, failureFunc) {
$('#' + div).fileupload({
dataType: 'json',
url: rootPath + 'Upload/SomeMethod',
formData: additionalParams,
start: function (e, data) {
showLoading();
},
stop: function (e, data) {
hideLoading();
},
add: function (e, data) {
data.submit();
},
always: function (e, data) {
var result = data.result;
if (result.HasError) {
failureFunc(result.Error);
} else {
successFunc(result);
}
}
});
};
控制器方法是
public virtual JsonResult SomeMethod(IEnumerable<HttpPostedFileBase> postedFiles, int id)
【问题讨论】:
-
也许 id 没有传递给 action?
-
这就是问题所在,但这在 FF 和 chrome 中运行良好。 IE 在期望 int 时得到参数为 null 的 500 错误
-
使用 JS 调试器,你能检查你调用
.fileupload()时additionalParams的值是否是你所期望的吗? (即在 IE 和 FF/Chrome 中相同。) -
您似乎正在使用 HMTL5 上传文件,并且 IE 浏览器 9、8、7 不兼容 HTML5,因此它们不支持该功能。
-
是什么让我看起来像是在使用 HTML5?
标签: javascript jquery internet-explorer file-upload