У меня такая проблема: у меня есть одна кнопка загрузки, которая загружает изображение и сохраняет его в какой-то папке. Есть ли способ вызвать загрузку действий, но не вернуть представление? Просто чтобы сохранить этот контент, а затем у меня появится еще одна кнопка, которая перенаправит меня на новое представление. Я попробовал с возвратом типа void, но он отправляет меня на пустую страницу.Выполнение действия в контроллере void
Это есть форма кнопки для загрузки и следующий
@using (Html.BeginForm("Upload", "Account", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
<div class="form-group">
@Html.LabelFor(model => model.Picture, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
<span class="btn btn-primary btn-file">
Choose <input type="file" name="file" />
</span>
<input type="submit" value="Upload" name="buttonName" class="btn btn-primary"/>
</div>
</div>
}
@using (Html.BeginForm("Next", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
<div class="form-group">
<div class="col-md-10">
<input type="submit" value="Next" name="buttonName" class="btn btn-default" />
</div>
</div>
}
Это действие:
public void Upload(HttpPostedFileBase file, string btnSubmit)
{
if (file != null && file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/Images/"), fileName);
file.SaveAs(path);
}
}
Ваш метод формы - 'Post', что означает, что он делает запрос на страницу, вам нужно вернуть * что-то *. То, что я делал в прошлом (с помощью методов async), - это вернуть «ActionResult» и, по крайней мере, вернуть новый «HttpStatusCodeResult (HttpStatusCode.OK)», но обычно перенаправляет их на один и тот же вид с некоторой информацией о загрузке (или неудача). –