我想知道如何使用jQuery ajax来实现这个功能。目前,我有一个jQuery UI对话框弹出框,并在上面放置了一个html输入文件。
现在当用户点击导入时,我想用jQuery进行ajax提交到服务器。
然而我不确定如何将文件传递给我的操作视图。
目前我已经完成了一个完整的带有以下内容的后台提交:
<% using (Html.BeginForm("Import", "Controller", FormMethod.Post, new { enctype = "multipart/form-data" }))
{%>
<br />
<p><input type="file" id="file" name="file" size="23 accept="text/calendar"></p><br />
<p><input type="submit" value="Upload file" /></p>
<% } %>
然后在我的控制器中:
public ActionResult Import(HttpPostedFileBase file)
我不确定如何使用jQuery传递HttpPostedFileBase,并如何在jQuery中设置enctype = "multipart/form-data"
。
编辑
好的,jQuery表单插件似乎是正确的选择。
$('#frm_ImportCalendar').livequery(function()
{
var options = {
dataType: 'json',
success: function(response)
{
alert(response);
}
};
$(this).ajaxForm(options);
});
我想知道为什么我的JSON不起作用,但有人提到它不能直接使用。我正在查看另一个链接,在那里有人能够使用JSON。
但我不确定为什么在Lck中在使用ajax提交方法之前要使用.submit。
编辑
如何更改文件上传的JSON结果以返回我的字典数组?
Dictionary<string, string> result = new Dictionary<string, string>();
result.Add("Msg", "Success!!");
result.Add("Body", calendarBody);
// how can I change this?
return new FileUploadJsonResult { Data = new { message = string.Format("{0} uploaded successfully.", System.IO.Path.GetFileName(file.FileName)) } };