1

ASP.NET MVC 4の最新バージョンを使用していjQueryます。

支店番号を入力するためのテキストボックスがあります。このテキスト ボックスに支店番号を入力してフォーカスを失ったら、AJAX 呼び出しを実行して支店名を取得する必要があります。次に、このブランチ名をビューに表示する必要があります。これは、表示のみを目的としており、編集するためではありません。

テキストボックスの HTML マークアップとブランチ名の「テキスト」:

<td class="edit-label">Branch Number: <span class="required">*</span></td>
<td>
    @Html.TextBoxFor(x => x.BranchNumber, new { maxlength = "6" })
    @Html.Display("BranchName", new { id = "BranchName" })
</td>

私のjQueryコード:

$('#BranchNumber').blur(function () {
    var url = '@Url.Action("GetBranchName")';
    var data = { branchNumber: $('#BranchNumber').val() };

    $.getJSON(url, data, function (data) {
        $('#BranchName').text(data);  // Need to have an element to populate the data
    });
});

サービスを呼び出してブランチの名前を戻すアクション メソッド:

public ActionResult GetBranchName(long branchNumber)
{
    Check.Argument.IsNotNegative(branchNumber, "branchNumber");

    string branchName = myService.GetBranchName(branchNumber);

    return Json(branchName, JsonRequestBehavior.AllowGet);
}

私のビューモデル:

public class MyViewModel
{
    public long BranchNumber { get; set; }

    public long BranchName { get; set; }
}

ブランチ名を返すときは、それをビューに表示する必要があります。どのように表示するのが最適なのかわかりません。LabelFor と DisplayFor を試しましたが、表示されないため、ブランチ名が返されたときにコントロールが見つからないため、表示されません。Textbox は正常に動作しますが、ユーザーがブランチの名前を変更できるようにしたくありません。

これに対する最善の解決策は何ですか?span 要素を用意して、ここにブランチ名を表示するだけでいいですか?

4

1 に答える 1

0

厳密に型指定されたビュー、任意の html 要素を使用して、モデル バインダーにその仕事をさせることができます。

// your view
// using div as an example
<div id="@("Branch"+Model.BranchName)">@Model.BranchName</div>
//
// in your js do this
$.getJSON(url, data, function (data) {
    $('#Branch'+@Model.BranchName).text(data);
});
于 2013-04-19T14:10:51.047 に答える