4

質問: このコードはStartValidation function. なんで?

<html>
<head>
    <script src="/Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('#frmUp').find("input[type = 'submit']").click(function () {
                $('#frmUp').submit();
            });
        });
        function StartValidation() {
            return true;
        }
    </script>
</head>
<body>
    <div>
        @using (Ajax.BeginForm("UploadRequestFile", "FileUpload", new AjaxOptions
            {
                HttpMethod = "POST",
                OnBegin = "return StartValidation();"
            }, new { id = "frmUp" }))
        {
            <input type="submit" name="Submit" value="Submit" />
        }
    </div>
</body>
</html>

ランタイム マークアップ

<form method="post" id="frmUp" data-ajax-method="POST" 
      data-ajax-begin="return StartValidation();" data-ajax="true" 
      action="/fileupload/UploadRequestFile?Length=10">            
      <input type="submit" value="Submit" name="Submit">
</form>
4

1 に答える 1

12

このコードは StartValidation 関数を起動していません。なんで?

送信ボタンのクリックイベントをサブスクライブしているように見えるため、これは絶対に必要ありません。

これらの Ajax.* ヘルパーを AJAX 化するために必要なのは、jquery.unobtrsuive-ajax.js スクリプトを参照することだけです。

<html>
<head>
    <script src="/Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script src="/Scripts/jquer.unobtrusive-ajax.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        function StartValidation() {
            return true;
        }
    </script>
</head>
<body>
    <div>
        @using (Ajax.BeginForm("UploadRequestFile", "FileUpload", new AjaxOptions
            {
                HttpMethod = "POST",
                OnBegin = "return StartValidation();"
            }, new { id = "frmUp" }))
        {
            <input type="submit" name="Submit" value="Submit" />
        }
    </div>
</body>
</html>

jquery.unobtrusive-ajax.min.jsこれらの Ajax.* ヘルパーに期待どおりの動作をさせるために、スクリプトへの参照をどのように追加したかお気付きでしょう。

UploadRequestFileあなたのコードについて私が持っている別の発言は、FileUploadコントローラーで名前が付けられたアクションを呼び出そうとしているように見えるということです。これらの名前を考えると、ファイルをサーバーにアップロードしようとしていると安全に推測できます(質問でそれを表示または言及しなかっただけです)。AJAX を使用してファイルをアップロードすることはできません。Uploadify や BlueImp File Upload などのプラグインを使用することも、クライアント ブラウザーが HTML5 File API をサポートしている場合は、それに依存することもできます。

于 2013-06-25T20:32:30.703 に答える