Я хочу опубликовать Html.BeginForm с данными и файлом и заменить содержимое новыми данными. Я сделал это только с данными.
JQuery с успехом, но только с данными.
$('form').submit(function () {
if ($(this).valid()) {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function (result) {
// Element is a div.
$(element).html(result);
}
});
}
return false;
});
Я пробовал уже 8 часов и придумал это. Но он перенаправляет меня на новую страницу, когда он должен обновить div. Все остальное работает как надо. Как загрузить файл и данные. Меня просто перенаправляет на новую страницу. И я схожу с ума.
Я использую ненавязчивый и validate.min. Я могу проверить форму и заставить ее обновить «БЕЗ ЗАГРУЗКИ ФАЙЛА».
Мой подход через 8 часов...
Частичное представление
@using Website.Models
@model MySuperModel
@if (Model != null)
{
using (Html.BeginForm("Action", "Controller", null, FormMethod.Post, new { enctype = "multipart/form-data", id = "helpme", @class = "please" }))
{
@Html.AntiForgeryToken()
// Some code..
}
}
Контроллер
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Action(MySuperModel Model, HttpPostedFileBase file)
{
// Some file validation
if (ModelState.IsValid)
{
// Updating the database and sets Model to its new values.
}
return PartialView("Action", Model);
}
Также пытался
return View(Model);
return ParticalView(Model);
return ParticalView("~/Views/SecretService/Action.cshtml", Model);
JQuery
$('form').submit(function () {
if ($(this).valid()) {
$(this).ajaxForm({
beforeSend: function () {
// Doing some loading gif stuff
},
success: function (result) {
// element is div holding the ParticalView
$(element).html(result);
},
complete: function () {
$.validator.unobtrusive.parse('form');
// And so on.
}
});
}
return false;
});
Я немного сократил код, чтобы сделать его более читаемым. Я надеюсь, что кто-то может помочь.
Html.BeginForm()
, если вы публикуете форму с помощью ajax. Если вы хотите сделать нормальную отправку формы, вам просто нужно добавить в форму атрибутenctype="multipart/form-data"
(и удалить свой скрипт) - person   schedule 23.08.2015