ASP.NET MVC Html.BeginForm設定timeout

2622 ワード

サンプルコード:
@using (Html.BeginForm("PublishSubmit", "Blog", FormMethod.Post, new { id = "publishForm", name= "publishForm" }))
{
    @Html.AntiForgeryToken()
    <tr>
        <td>
              <br>
        </td>
        <td>
            @Html.TextBoxFor(n => n.Title, new { id = "txtTitle", size = "61" })
        </td>
    </tr>
    <tr>
        <td>&nbsp;</td>
        <td align="left">
            <input type="submit" name="btnSubmit" value="  " id="btnSubmit">
        </td>
    </tr>
}

一般的にMVCでBeginFormを使用していますが、Formコミットのtimeoutを設定することはできません.解決策は次のとおりです.
まず、コミットボタンのタイプをbottonに変更し、onclikイベントを追加します.
<input type="botton" name="btnSubmit" onclik="submit();" value="  " id="btnSubmit">

submitスクリプトメソッドを追加します.
function submit() {
    var option_form = $("#publishForm");
    $.ajax({
        url: option_form.attr('action'),
        type: option_form.attr('method'),
        data: option_form.serialize(),
        dataType: 'json',
        timeout: 10000, //10 
        success: function (data) {
            if (data) {
                console.log(data);
            }
        },
        error: function (xhr, ajaxOptions, thrownError) {
            if (xhr.status == 500) {
                alert("  !    !    :" + xhr.responseText);
            } else {
                alert("    ,     !");
            }
        }
    });
}