0

フォームが 2 回送信されています。

同様の jQuery 関連の質問herehere、および Google グループhereを調べましたが、解決策を見つけることができませんでした。

私は Knockout.js を初めて使用するので、何か明らかなことを見逃しているのでしょうか? なぜそれが起こっているのかを理解したいと思います。ここに私が持っているものがあります:

フォーム:

<form data-bind="submit: Save">
 <div class="span11">
@foreach (var prop in ViewData.ModelMetadata.Properties)
{      
  @Html.Label(prop.PropertyName, new { @class = "attribute-label" })
  @Html.TextBox(prop.PropertyName, "", new { data_bind = "value: " + prop.PropertyName + "" })

}

</div>
<br />
<button type="submit" class="btn" data-bind="enable: IsEnabled">Update                    
</button>
</form>

ビューモデル:

var viewModel = @Html.Raw(Json.Encode(Model));

viewModel.Save = function() {            

        $.ajax({
            url: '@Url.Action("UpdateEmployee")',
            contentType: 'application/json; charset=utf-8',
            type: "POST",
            data: ko.toJSON({ employee: viewModel }),

            success: function(result) {
                //...

            },

            error: function(xhr, ajaxOptions, thrownError) {
               //...

            }
        });

    };

    $(function() {

        ko.applyBindings(viewModel);

    });
4

1 に答える 1

1

あなたが示したコードを考えると、それが 2 回送信される理由はありません。Save()発生している可能性があるのは、 2 回送信しているように見える関数を明示的に呼び出している他のコードが呼び出されていることです。

あなたが示したものを模倣するためにフィドルを書きましたが、あなたが説明しているのと同じ問題はありません。

フィドル

于 2013-05-24T17:52:12.070 に答える