0

MVC5を使用しています。HttpPostedFileBase を使用したファイルのアップロードに問題があります。ディスクからファイルを選択し、それに関する情報を (テキスト ボックスに) 入力できるフォームがあります。フォームを送信すると、コントローラー アクションが呼び出されます。このアクションでは、ファイルを開き、特定のデータ(テキストボックスのデータに関連)があるかどうかを確認します。そこで、ここで検証を行います。JQuery を使用してそれを行うことはできません - 複雑です。サーバー側の検証が唯一のオプションです。最後に、検証が失敗した場合、(ファイルを含む) モデルをビューに返しますが、その後、ファイル フィールドの横に検証エラーが発生しますが、ファイル フィールドは空です。ファイルをビューに戻すのは難しいと読みました。ファイルのアップロードにajaxを使用したくありません。シンプルにやりたい。参考になる記事がありましたら、ぜひシェアしてください。

どうすれば問題を解決できますか?

4

1 に答える 1

0

ファイルのアップロードに AJAX を使用しないとおっしゃっていましたが、このソリューションは非常にシンプルなものだと思います。

次の jQuery プラグイン ( https://blueimp.github.io/jQuery-File-Upload/ ) を使用すると、そのプロセスを自動化できます。ファイルに検証の問題がある場合は、次のモデルをエラーとともに返すことができます。 .

string errors = "Errors returned from complex logic";
if (!String.IsNullOrEmpty(errors))
{
    // error response
    status = new ViewDataUploadFilesResult()
    {
        name = Path.GetFileName(hpf.FileName),
        size = hpf.ContentLength,
        error = errors
    };
}

jQuery ファイルのアップロードに関するドキュメントと一致する応答に必要なクラスは次のとおりです: https://github.com/blueimp/jQuery-File-Upload/wiki/Setup

public class ViewDataUploadFilesResult
{
    public string name { get; set; }
    public int size { get; set; }
    public string type { get; set; }
    public string url { get; set; }
    public string error { get; set; }
}

私が正しく理解している場合、ファイルは既にユーザーのコンピューター上にあるため、ファイルをアップロードしようとしている現在のファイルに関連付けるだけで、エラーが返されます。また、アップロードするファイルを再選択する必要がないようにします。ユーザーがアップロードしているファイルを既に持っているため、実際のファイルをユーザーに返す必要がある他の理由はありません。

于 2014-12-05T19:58:45.643 に答える