Обработка 2 кнопок отправки действий в одном представлении / форме - ASP.NET MVC 2 RTM
У меня есть вид, в котором пользователь может загрузить файл на сервер.
В этом представлении у меня также есть 2 кнопки: одна для загрузки файла и другая для загрузки последнего импортированного файла.
В моем контроллере я создал 2 метода действий: импорт и экспорт.
Как мне удалось перенаправить каждое нажатие кнопки на правильный метод действия в моем контроллере?
Я пробовал Html.ActionLink:
<%= Html.ActionLink("Upload", "Import", "OracleFile")%>
<%= Html.ActionLink("Download", "Export", "OracleFile")%>
Html.ActionLink не добился цели. Ссылки действия приводили меня к правильным методам действия, но они генерировали запрос GET. Таким образом, Request.Files.Count = 0.
Мне нужен запрос POST.
Примечание: самая интригующая часть - то, что загрузка работала, и внезапно она перестала работать. Я видел, что у некоторых людей возникает та же проблема с задачами FileUpload, в которых Request.Files всегда пуст. Я думаю, что это пусто, потому что вам нужно сообщение на сервер. Не так ли?
3 ответа
Может быть, это даст вам идею:
вид:
<form enctype="multipart/form-data" method="post" action="/Media/Upload/Photo">
<input type="file" name="file" id="file" />
<input type="submit" name= "submitImport" value="Upload" />
<input type="submit" name = "submitExport" value="Download" />
</form>
контроллер:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Action (FormCollection formCollection)
{
if (formCollection["submitImport"] != null)
{
return Import(formCollection);
}
if (formCollection["submitExport"] != null)
{
return Export(formCollection);
}
}
Экспорт и импорт являются соответствующими действиями
Вы должны использовать форму "multipart/form-data" и отправить форму. Нет ActionLink.
<form enctype="multipart/form-data" method="post" action="/Media/Upload/Photo">
<input type="file" name="file" id="file" />
<input type="submit" value="Upload" />
</form>
Чтобы сгенерировать POST-запрос для загрузки, используйте элемент формы File Input и просто отправьте сообщение на сервер как обычно.
http://www.w3schools.com/jsref/dom_obj_fileupload.asp
Взгляните на этот пост от Скотта Хансельмана. http://www.hanselman.com/blog/ABackToBasicsCaseStudyImplementingHTTPFileUploadWithASPNETMVCIncludingTestsAndMocks.aspx