1

私は本当に興味があります。一致しない要素を除外しながら、フォームの入力 ID と同じ名前の特定のパラメーターを持つ MVC 4 メソッドに、シリアル化されているかどうかにかかわらず、フォーム データ全体を jQuery Ajax post 操作で送信することは可能ですか?

MVC 4 コントローラー メソッド

[HttpPost]
public JsonResult DoWork(string companyName, string firstName, string lastName, string email)
{
    //.. do stuff and return result...
}

HTML

<form id="MyForm" method="post">
    <input id="CompanyName" name="CompanyName" type="text"/>
    <input id="FirstName" name="FirstName" type="text"/>
    <input id="LastName" name="LastName" type="text"/>
    <input id="Email" name="Email" type="text"/>
    <input id="Var1" name="Var1" type="text"/>
    <input id="Var2" name="Var2" type="text"/>
</form>

jQuery アヤックス

$.ajax({
type: 'post',
dataType: 'html',
url: '/Controller/DoWork',
data: $('#MyForm').serialize()
});

すぐに使用できない場合、これを実現する方法について調べることができる基本的なアイデアを誰かが持っていますか? メソッドを機能させるために必要な正確なパラメーター名と値を提供せずに、誰かが私のメソッド呼び出しを理解するのを「難しく」したいと思います。

4

2 に答える 2

1

一致しない要素を除外しながら、フォームの入力 ID と同じ名前の特定のパラメーターを持つ MVC 4 メソッドに、シリアル化されているかどうかにかかわらず、フォーム データ全体を jQuery Ajax post 操作で送信することは可能ですか?

はい、可能です。Requesただし、オブジェクトを介して投稿されたデータに引き続きアクセスできることを思い出してください。コントローラーメソッドのすべての引数を実際に削除しても、データをポストできます。コントローラ メソッドに引数を持つことの本当の利点は、引数の型がオブジェクト (ビューモデル) である場合です。検証を行うことができるように、データ注釈を持つビューモデル。ただし、必須ではないことに注意してください。これは単なるテクニックです。

注意すべきもう1つのことは、次のようなものがある場合です

public ActionResult DoWork(string first, string last, int id, int? id2) {
}

データのみを渡すfirstlast、投稿アクションによって例外が発生します。例外はid、コントローラーが値を受け取ることを期待するパラメーターにあります。firstlastおよびid引数に値を渡して を除外すると、null 値を持つため、id2例外は発生しません。id2

したがって、投稿された例は機能します。また、値を取得したい場合は、 と を実行することで と の値を取得Var1できます。もちろん、それらは無視できます。Var2Request["Var1"]Request["Var2"]

于 2013-05-09T03:38:14.573 に答える