2016-03-28 18 views
0

これが可能かどうかは確かですが、jQueryを使用して、バインドされたモデルの値をPartialView内の別のテキストボックスに割り当てる必要があります。jQueryを使用してテキストボックスにモデルプロパティを割り当てる

ページが読み込まれると、すべてのモデル情報が正しく読み込まれます。しかし私はDDLを実装して履歴の更新を表示したいと思っています。

revisionIDを受け入れる私のそれぞれのコントローラの中で私はアクションメソッドを呼び出すことができます。メソッドが正しいデータを返すことを確認しました。

私のコードスニペットは以下を参照してください:

部分図:

$('#revisionDDL').change(function() { 
    var selectedRevisionID = $(this).val(); 

    if (selectedRevisionID == '') { 
     selectedRevisionID = @Model.RevisionID - 1; 
    } 

    var url = '@Url.Action("GetAgreementByRevision")'; 

    $.get(url, { revisionID: selectedRevisionID }, function() { 
     $('#ChangeReason').val('@Model.ChangeReason'); 
    }) 
}); 

入力要素:

<div class="input-group"> 
    <span class="input-group-addon" id="change-reason">Change Reason</span> 
    @Html.TextAreaFor(m => m.ChangeReason, new { @class = "form-control", @rows = "1" }) 
</div> 

コントローラ方法:

public ActionResult GetAgreementByRevision(int revisionID) 
{ 
    Agreement revisedAgreement = new Agreement(); 

    revisedAgreement = _agreementService.GetAgreementDetailsByRevision(revisionID); 

    return PartialView("AgreementDetailsFormPartial", revisedAgreement); 
} 

私がこれを達成できない場合、私の他の選択肢は何ですか?

答えて

2

コントローラ内のメソッドによって、PartialViewが返され、HTMLコンテンツが返され、そのHTMLコンテンツをテキスト領域の値として渡そうとしています。これは動作する方法ではありません。 Json(revisedAgreement, JsonRequestBehavior.AllowGet);を返し、JavaScriptでこのオブジェクトにアクセスする必要があります。

$.get(url, { revisionID: selectedRevisionID }, function (data) { 
     // 'data' is your Agreement object 
     $('#ChangeReason').val(data.SomePropertyHere); 
    }); 
+0

それは私がそれをしたいと正確に動作します!私はJSONでほとんど仕事をしていませんが、いくつかの素早いドキュメンテーションのチェックとすべてが正しく実装されています。ありがとうございました! – Sean

+1

あなたは大歓迎です。幸せに助けて! –

関連する問題