2013-09-10 3 views
0

У меня есть вид, где я хочу создать нового пользователя. Эта форма должна включать имя нового пользователя и изображение. Так оно и должно выглядеть следующим образомasp.net mvc2 сохранить выбранный файлupload (когда ModelState.IsValid = false)

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

<asp:Content ID="aboutTitle" ContentPlaceHolderID="TitleContent" runat="server"> 
    title 
</asp:Content> 

<asp:Content ID="aboutContent" ContentPlaceHolderID="MainContent" runat="server"> 
    <%= Html.ValidationSummary("Error: Missing Values!") %> 
    <% using (Html.BeginForm("Create", "User", FormMethod.Post, new { enctype = "multipart/form-data" })) 
      {%> 
<%= Html.TextBoxFor(m => m.name)%> 
<%= Html.TextBoxFor(m => m.uploadFile, new { type = "file" })%> 
<input type="submit" value="Create User" /> 
<% } %> 

</asp:Content> 

Мой UserModel выглядит следующим образом:

public class UserModel 
    { 
     [Required] 
     public string name { get; set; } 

     [Required] 
     public HttpPostedFileBase uploadFile { get; set; } 
    } 

Мой контроллер выглядит следующим образом:

[AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult Create(UserModel model) 
     { 
      if (!ModelState.IsValid) 
       return View(model); 
      ... 
     } 

Таким образом, если пользователь вводит только имя, которое он/она получает сообщение об ошибке. Кроме того, имя, которое было введено, находится в текстовом поле. Моя проблема заключается в том, что если пользователь выбирает только изображение (без имени), он все равно получает сообщение об ошибке, но файл, который он выбрал в файл-браузере, не был сохранен (поэтому он должен выбрать его снова). Есть ли способ, когда я верну свою модель обратно в Create-View HttpPostedFileBase uploadFile принимается <% = Html.TextBoxFor (m => m.uploadFile, new {type = "file"})%>?

ответ

0

Ответ на ваш вопрос заключается в том, что вы можете имитировать эту функциональность. Для этого вам нужно сначала сохранить файл на сервере, затем вы можете отобразить имя файла, сохраненного на странице. Это дает пользователю впечатление, что файл будет загружен, когда он исправляет ошибки.

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

Надеюсь, это поможет.

+0

Благодарим вас за ответ. Хорошо, я понимаю это. Я буду имитировать эту функциональность, как вы сказали. – willi

 Смежные вопросы

  • Нет связанных вопросов^_^