Вы на правильном пути.Я бы порекомендовал вам использовать плагин jquery form , который позволил бы вам AJAXify <form>
и обработать успешный случай.
Пример:
Модель:
public class UploadedFile
{
public bool Success { get; set; }
public string Url { get; set; }
public string Message { get; set; }
}
Контроллер:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyViewModel();
return View(model);
}
[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{
if (file != null && file.ContentLength > 0)
{
var images = Server.MapPath("~/images");
var filename = Path.Combine(images, Path.GetFileName(file.FileName));
file.SaveAs(filename);
return View("UploadedFile", new UploadedFile
{
Success = true,
Url = Url.Content("~/images/" + Path.GetFileName(file.FileName))
});
}
return View("UploadedFile", new UploadedFile
{
Success = false,
Message = "Please upload a file"
});
}
}
Просмотр:
<script src="@Url.Content("~/scripts/jquery.form.js")" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$('form').ajaxForm(function (result) {
$('#result').html(result);
});
});
</script>
@using (Html.BeginForm("index", "home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="file" />
<input type="submit" value="Save" />
}
<div id="result"></div>
и партиал UploadedFile:
@model AppName.Models.UploadedFile
@{
Layout = null;
}
@if (Model.Success)
{
<img src="@Model.Url" alt="" />
} else {
@Model.Message
}