У меня есть вид, где я хочу создать нового пользователя. Эта форма должна включать имя нового пользователя и изображение. Так оно и должно выглядеть следующим образом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"})%>?
Благодарим вас за ответ. Хорошо, я понимаю это. Я буду имитировать эту функциональность, как вы сказали. – willi