2016-03-21 22 views
2

私はASP.NET MVC 5でプロジェクトを作成しています。画像ファイルをアップロードする必要があります。サーバーにイメージをアップロードできます。送信されたビューにエラーがある場合ビューに表示されるいくつかのエラーメッセージを含むビューモデルを返すので、ユーザーはイメージを再度選択する必要はなく、ビュー内のすべてのフォームフィールドデータには以前に選択したファイルは表示されません。これを達成する方法を手伝ってください。ここでASP.NET MVC 5でビューのリロード後に選択したファイルを表示

は、セキュリティ上の理由から、私はここに画像

@Html.TextBoxFor(model => Model.Logo, null, new { type = "file"}) 

を選択する必要があり、コードがモデルフィールドで

[DataType(DataType.Upload)] 
    public HttpPostedFileBase Logo 
    { 
     get; 
     set; 
    } 

答えて

2

である、あなたは、コントローラ内のファイル入力の値を設定することはできません、したがって、ビューを返す場合にユーザーがファイルを再度選択しないようにするには、まずファイルを保存し(一時的な場所に保存する)、ファイルがアップロードされたことを示すインジケータを表示する必要があります。たとえば、あなたのモデルは、次のプロパティ

public HttpPostedFileBase Logo { get; set; } 
public string LogoFileName { get; set; } 
public string LogoPath { get; set; } 

とコントローラのメソッド内に含まれているファイルを保存し、FileName(すなわちmodel.LogoFileName = Logo.FileName;)とPathプロパティを設定できます。次に、ビューに条件文を追加してFileNameが存在する場合はそれを表示し、そうでない場合はファイル入力を表示します。たとえば、

if(Model.LogoFileName == null) 
{ 
    @Html.TextBoxFor(m => m.Logo, new { type = "file" }) 
} 
else 
{ 
    @DisplayFor(m => m.LogoFileName) 
} 
関連する問題