部分ビューから MVC3 コントローラにフォーム データを送信しようとしています。何らかの理由で、送信されたデータ モデルが入力されません。
これは、フォーム送信を処理する jquery です。
$(document).on('submit', '#FormNewCall', function (e) {
e.preventDefault();
$.ajax(
{
async: true,
type: "POST",
url: $(this).attr('action'),
data: $(this).serialize(),
success: function (data) {
$("#callTable").replaceWith(data);
},
error: function () {
alert("Error submitting call");
},
complete: function () {
CloseNewCall();
}
})
});
「on」(最初の行) を使用している理由は、「FormNewCall」を含む部分ビューが、必要な場合にのみ jquery/ajax を介して追加されるためです。
コントローラーの ActionResult は次のようになります。
// POST: /Default/SubmitCall/
[Authorize]
[HttpPost]
public ActionResult SubmitCall(ServiceCallModel SubmittedModel)
{
if (Request.IsAjaxRequest())
{
// Do things before returning a new view
}
else
{
return View();
}
}
実際のフォームは、次のような多くのものを含む部分ビューです。
<div class="rowContainer">
<tr class="SmallRow">
<td>@Html.Label("Brief")
</td>
<td>@Html.TextBoxFor(m => m.NewCallModel.description)
</td>
</tr>
</div>
コントローラーでブレークポイントを設定すると、パラメーター「SubmittedModel」は存在しますが、すべて空の値になります。
プロパティ「Request.Form」が、送信されたフォームからのすべての予想されるデータを含む json 文字列であるかのように見えます。
足りないものはありますか?