通常、フォームをデザインするとき、期待するデータはページのビューモデルの一部であり、クラスをコントローラーメソッドに配置すると、バインディングが機能します。
ただし、マスターページの部分ビューにフォームを追加しているため、特定のビューモデルに固有のものではありません。フォームフィールドのIDが、通常は自動的に生成されるIDと一致することを確認しようとしましたが、コントローラーメソッドではオブジェクト値が常にnullになっています。
これが私のマスターページの部分的なビューからのスニペットです:
<tr>
<td >Current password:</td>
<td><%= Html.Password("PasswordChange.OriginalPassword", "", new RouteValueDictionary { { "class", "required remote" } })%></td>
</tr>
<tr>
<td >New password:</td>
<td><%= Html.Password("PasswordChange.NewPassword", "", new RouteValueDictionary { { "class", "required remote" } })%></td>
</tr>
ご覧のとおり、PasswordChangeはすべてのビューモデルの一部ではありません(このフォームを使用するために、すべてのビューモデルを共通ベースから継承する必要はありませんか?)。
私のコントローラーメソッドは次のようになります。
[HttpPost]
public ActionResult ChangePassword(PasswordChange PasswordChange)
{
メソッドをヒットしましたが、PasswordChange.OriginalPasswordとPasswordChange.NewPasswordは常にnullです。
これを行う簡単な方法があると思いますが、理解できません。