Мне интересно, как бы я сделал это с jQuery ajax.Прямо сейчас у меня есть всплывающее окно с диалоговым окном jQuery ui, и на нем есть html-файл ввода.
Теперь, когда пользователь нажимает импорт, я хочу сделать ajax-сообщение на сервер с jQuery.* Я не уверен, как передать файл в мой вид действия.
Прямо сейчас я делаю полный пост обратно, поэтому у меня есть это
<% 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)
Так что я не уверен, как пройтив HttpPostedFileBase с jQuery и как установить enctype = "multipart/form-data"
в jQuery.
Edit
Хорошо, похоже, плагин формы jQuery подходит.
$('#frm_ImportCalendar').livequery(function()
{
var options = {
dataType: 'json',
success: function(response)
{
alert(response);
}
};
$(this).ajaxForm(options);
});
Мне было интересно, почему мой JSON не работает, но кто-то упомянул, что вы не можете использовать его так, как есть.Я проверяю другую ссылку, где кто-то смог использовать json.
Я не уверен, хотя, почему в Lck использовал .submit до ajax-метода отправки.
Edit
Как я могу изменить результат загрузки файла 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)) } };