複数のセクションがあるビューがあります。部分的なビューとajaxを使って個別にセクションを更新したいと思います。ajax MVCを使用して複雑なオブジェクトを渡す
私はこれまでのところ、これを持っている:
コントローラー:
[HttpPost]
public PartialViewResult userdetailssettings(UserDetails model)
{ .... }
ビューHTML:
<div id="userDetailsPartial">
@Html.Partial("_user_details", Model.userdetails)
</div>
部分HTML:ビューの
<div class="form-group">
<div class="col-md-12">
@Html.TextBoxFor(x => x.Forename, new { @class = "form-control", placeholder = "Enter your forename" })
@Html.ValidationMessageFor(x => x.Forename)
</div>
</div>
<div class="form-group">
<div class="col-md-12">
@Html.TextBoxFor(x => x.Surname, new { @class = "form-control", placeholder = "Enter your surname" })
@Html.ValidationMessageFor(x => x.Surname)
</div>
</div>
Javascriptを:
モデルはajaxによってコントローラに渡されますが、値は入力の値ではありません。これらは、ビューを開くためにコントローラから渡された元の値です。
私はタグで部分的な部分をラップしてみましたが、部分的に部分的にフォームタグを追加しようとしました。私もこのコードを入れて試してみました
:クリック機能インサイド
var detailsUrl = "@Url.Action("userdetailssettings", "UserLogin")";
var detailsmodel = JSON.stringify(@Html.Raw(Json.Encode(@Model.userdetails)));
。
入力から更新された値を渡すものはありません。
私はjavascriptのすなわち
var detailsmodel = [ { Forename: $('#Forename').val(), Surname: $('#Surname').val() } ];
に入力からモデルの新しいインスタンスを作成すると考えている。しかし、私はちょうどJSONを作成していた場合、なぜ私はJSONにバインドされたモデルを変換することはできません。
*「MVCではなくMVCを使用しているため、なぜバインドされたモデルをjsonに変換できないのですか」*あなたの「束縛されたモデル」は、コントローラからモデルを通したビューへの一方向です。あなたは、 "束縛されたモデル"という言葉を "モデル"と "束縛"と混同しています。フォームをPOSTした場合、モデルが取得されますが、ajax経由で渡す場合は、フォームから現在の値を取得する必要があります(コメントの '入力からモデルの新しいインスタンスを作成する場合と同じです)。あなたの 'var detailsmodel = JSON.stringify ...'はビューが生成されたときにセットされ、変更されません。 –
ありがとうございます。私はモデルの新しいインスタンスを作成するために貪欲にします。あなたがあなたのコメントを答えたら、私は受け入れます。再度、感謝します。 –