Обработка 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

Другие вопросы по тегам