3

MVC3、Razor、C#、JQuery、および AJAX を使用しています。

フォームをサーバーにポストバックするために Ajax 呼び出しを使用しています。コントローラーに返されるすべてのフォーム要素の値を次のように取得します。

    [HttpPost]
    public ActionResult Edit(Product myProduct, string actionType)

    if (actionType == "Save")
       save....

そして、私が持っているビューで:

@using (Html.BeginForm("Edit", "RA", FormMethod.Post, new { @class = "editForm", @id = "frmEdit" }))

フォーム要素:

<td>
@Html.HiddenFor(p=>p.Id) 
<button type="submit" name="actionType" value="Save" >Save</button>
</td>
<td>@Html.EditFor(p=>p.Name)</td>

一部の Ajax:

    $('.editForm').on('submit', function () {
    $.ajax({
        url: this.action,
        type: this.method,
        data: $('#frmEdit').serialize(),          
        context: $('button', this).closest('tr'),
        success: function (result) {
            $(this).html(result);
        }
    });
    return false;
});

JQueryの問題とボタンの値の送信に関するかなりの数の投稿を見たので、問題の行は次のとおりだと思います。

        data: $('#frmEdit').serialize(), 

しかし、「保存」のactionTypeを送信するボタンを取得できません。私はただヌルになります。

感想大歓迎です。

ありがとう。

アップデート:

コードが JQuery リスナーに干渉しているようです ?? 私のコードは次のとおりです。

<input type="submit" id="btn" name="btn" value="Save" onclick="document.getElementById('actionType').value = 'Save';"/>
4

1 に答える 1

1

ドキュメントから:

フォームはボタンを使用して送信されていないため、送信ボタンの値はシリアル化されません。

ただし、手動で追加できます。

data: $('#frmEdit').serialize() + '&actionType=Save',

また

data: $('#frmEdit').serialize() 
    + '&'
    + encodeURIComponent(button.name)
    + '='
    + encodeURIComponent(button.value),

DOM 要素buttonはどこにありますか。<button>

于 2013-05-09T23:53:07.787 に答える