MVC: Как отправить загрузку файла и другие поля формы на один action

Я создаю приложение библиотеки документов с DocumentController , которому необходимо загрузить эскизное изображение каждого объекта в библиотеке. Я хочу сохранить поле загрузки файла в той же форме создания / редактирования, что и другие поля (заголовок, описание, идентификатор категории и т. Д.).
Как разместить загрузку файла и другие поля формы в одно действие Я создаю приложение библиотеки документов с DocumentController, которому необходимо загрузить миниатюрное изображение каждого объекта в библиотеке. Я хочу сохранить поле загрузки файла в том же Create / ...

Я создаю приложение библиотеки документов с DocumentController , которому необходимо загрузить эскизное изображение каждого объекта в библиотеке. Я хочу сохранить поле загрузки файла в той же форме создания / редактирования, что и другие поля (заголовок, описание, идентификатор категории и т. Д.).
Как разместить загрузку файла и другие поля формы в одно действие Я создаю приложение библиотеки документов с DocumentController, которому необходимо загрузить миниатюрное изображение каждого объекта в библиотеке. Я хочу сохранить поле загрузки файла в том же Create / ...

Я создаю приложение библиотеки документов с DocumentController , которому необходимо загрузить миниатюрное изображение каждого элемента в библиотеке. Я хочу сохранить поле загрузки файла в той же форме создания / редактирования, что и другие поля (заголовок, описание, идентификатор категории и т. Д.).
Проблема в том, что я не уверен, могу ли я смешивать или вкладывать теги формы для

Html.BeginForm("Create", "Document", FormMethod.Post, enctype = "multipart/form-data")

и

Html.BeginForm()

Мое мнение следующее:

 <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Publications.WebUI.Models.DocumentEditViewModel >" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Edit
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <fieldset>
        <legend>Edit
            <%=  Html.Truncate(Model.Document.Title, 50)%></legend>
        <%= Html.ValidationSummary(false) %>
        <% using (Html.BeginForm())
           { %>
        <div class="editor-label">
            <%= Html.LabelFor(model => model.Document.Title) %>
        </div>
        <div class="editor-field">
            <%= Html.HiddenFor(model => model.Document.DocumentId ) %>
            <%= Html.ValidationMessageFor(model => model.Document.Title) %>
            <%= Html.TextBoxFor(model => model.Document.Title)%>
        </div>
        <div class="editor-label">
            <%= Html.LabelFor(model => model.Document.DocumentUrl)%>
        </div>
        <div class="editor-field">
            <%= Html.ValidationMessageFor(model => model.Document.DocumentUrl)%>
            <%= Html.TextBoxFor(model => model.Document.DocumentUrl)%>
        </div>
        <div class="editor-label">
            <%= Html.LabelFor(model => model.Document.Description)%>
        </div>
        <div class="editor-field">
            <%= Html.ValidationMessageFor(model => model.Document.Description)%>
            <%= Html.TextAreaFor(model => model.Document.Description) %>
        </div>
        <div class="editor-label">
            <%= Html.LabelFor(model => model.Document.ThumbnailUrl )%>
        </div>
        <div class="editor-field">
            <% using (Html.BeginForm("Create", "Document",
                    FormMethod.Post, new { enctype = "multipart/form-data" }))
               {%>
            <%= Html.ValidationMessageFor(model => model.Document.ThumbnailUrl )%>
            <input name="uploadFile" type="file" />
            <% } %>
        </div>
        <div class="formActions">
            <div class="backNav">
                <%= Html.ActionLink("< Back to List", "Index") %>
            </div>
            <div class="submit">
                <input type="submit" value="Save" />
            </div>
            <% } %>
        </div>
    </fieldset>
</asp:Content>

Мой контроллер просто принимает модель документа и HttpPostedFileBase и пытается загрузить файл на сервер и сохранить документ в репозиторий

 [HttpPost]
 public ActionResult Create(Document document, HttpPostedFileBase uploadFile)
 {

     if (ModelState.IsValid)
     {
         //Process file upload
         //Update repository

      }

       return View("List");
  }

. Поэтому мне интересно, можно ли выполнить загрузку файла и обновить репозиторий одним и тем же действием, и как мне структурировать свое представление, чтобы облегчить это .

35
задан Liam 6 August 2018 в 09:02
поделиться