私の知る限りでは、モデルバインダーはアクションメソッドのすべてのプリミティブパラメータを繰り返し処理し、入力データ(http postデータ)の各キーとパラメータの名前を比較します。一致が見つかると、対応する入力データがパラメータに割り当てられます。MVCモデルバインダー:<input>の属性とアクションメソッドの入力パラメーターを比較しますか?
ここで私の質問は、どれが比較されてメソッドパラメータに割り当てられる属性値(名前、値)ですか?<input>
です。
ビュー:
<input type="submit" name="BtnSave" value="Save Employee" />
<input type="button" name="BtnReset" value="Reset" onclick="ResetForm();"/>
<input type="submit" name="BtnCancel" value="Cancel" />
コントローラー:
今BtnSubmit
public ActionResult SaveEmployee(Employee employee, string BtnSubmit)
{
switch (BtnSubmit)
{
case "Save Employee":
return Content (employee.EmployeeName + "," + " " + employee.Designation + "," + " " + employee.DateOfBirth);
case "Cancel":
return RedirectToAction("EmployeeForm");
}
return View();
}
比較される属性に?名前や価値?
フォームは、成功したコントロールの名前と値のペアのみをポストします。コントロールの名前がパラメータ(またはモデルプロパティ)の名前と一致する場合は、コントロールの値で設定されます。 –
@StephenMueckeこの例を参照してください。名前または値BtnSubmitと比較されるもの – izengod
私が知っている限り、ボタンの値はフォームから返信されません。その意味ではコントロールとしてカウントされません。 MVCそのものとは関係ありません.HTMLフォームが動作する方法と同じです。フォームをポストバックし、ブラウザの開発ツールやFiddlerでリクエストの本文を見てください。投稿リクエストの内容が表示されます。ボタン/送信コントロールに関連するものが含まれていると、私は驚いています。特別な値が必要な場合は、非表示のフィールドを追加します。 – ADyson