0

新しいユーザーを作成するビューがあります。このフォームには、新しいユーザーの名前と写真を含める必要があります。だから、それはこのように見えるはずです

<%@ 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" })%>と見なされる方法はありますか?

4

1 に答える 1

0

あなたの質問に対する答えは、この機能を模倣できるということです。そのためには、最初にファイルをサーバーに保存する必要があります。次に、保存したファイルの名前をページに表示できます。これにより、エラーを修正したときにファイルがロードされるという印象をユーザーに与えます。

セキュリティ上の理由から、ブラウザーでは、キャッシュ用に選択されたファイルの自動読み込みや一時的なキャッシュさえも許可されていません。

お役に立てれば。

于 2013-09-10T09:25:34.803 に答える