私は次のコードを持っていますが、送信ボタンをクリックすると、その名前と値がサーバーに送信されません
@using(Ajax.BeginForm(new AjaxOptions{Url = "http://localhost/controller/action"}))
{
<button name="action" type="submit" value="Save">
<span>Save</span>
<!-- More HTML tags here -->
</button>
}
ファイルを調べて、jquery.unobtrusive-ajax.js
クリックされたボタンの名前/値を送信する必要があるかどうかを確認し、これらの値を属性としてフォームに付加するこのコードを見つけました。このコードは、後でPOSTリクエストで渡されます。
$("form[data-ajax=true] :submit").live("click", function (evt) {
var name = evt.target.name,
form = $(evt.target).parents("form")[0];
$(form).data(data_click, name ? [{ name: name, value: evt.target.value }] : []);
setTimeout(function () {
$(form).removeData(data_click);
}, 0);
});
の値evt.target.name
とevt.target.value
には、クリックを登録したボタンタグ内のHTML要素の名前/値が含まれていました。
evt.target
上記のコードで置き換えることでうまくいくようになりましたevt.currentTarget
が、これが意図しない副作用をもたらす可能性があるのではないかと少し心配しています。
送信ボタンの名前/値をサーバーに送信するためのより良い方法はありますか?