-1

私は c# MVC3 & razor、Entity Framework、Linq を使用しています。

最初のClient ID と 2 番目のStore Nameの 2つのフィールドを持つフォームがあります。ユーザーが ID を入力すると、StoreName フィールドが自動的に入力されます... データは、この 2 つのデータが保存されているデータベースから取得されます。

4

1 に答える 1

1

AJAX を使用できます。したがって、クライアント ID をパラメーターとして受け取るコントローラー アクションをセットアップすると、データベースにクエリが実行され、対応するストア名が JSON の結果として返されます。次に、ストア ID を含むテキスト入力のイベントをサブスクライブし.blur、AJAX 呼び出しをコントローラー アクションに送信して、2 番目の入力フィールドに入力します。

ええ、私は知っています、無意味なジバージャバー、コーデックスをください。

ここ:

public ActionResult GetStoreName(int clientId)
{
    // of course thath's just an example here. I have strictly no idea
    // what database access technology you are using, how your models look like
    // and so on. Obviously you will have to adapt this query to your data model.
    var client = db.Clients.FirstOrDefault(x => x.Id == clientId);
    if (client == null)
    {
        return HttpNotFound();
    }

    return Json(new { storeName = client.Store.Name }, JsonRequestBehavior.AllowGet);
}

ここで、次のビューを想定します。

<div>
    @Html.LabelFor(x => x.ClientId)
    @Html.TextBoxFor(x => x.ClientId, new { id = "clientId", data-url = Url.Action("GetStoreName") })
</div>
<div>
    @Html.LabelFor(x => x.Store.Name)
    @Html.TextBoxFor(x => x.Store.Name, new { id = "storeName" })
</div>

別の JavaScript ファイル.blurで、最初のテキスト ボックスのイベントをサブスクライブし、ユーザーが入力したクライアント ID を送信するコントローラーへの AJAX 要求をトリガーすることができます。成功のコールバックでは、AJAX 呼び出しの結果で 2 番目のテキスト フィールドを更新します。

$(function() {
    $('#clientId').blur(function() {
        var clientId = $(this).val();
        $.ajax({
            url: $(this).data('url'),
            type: 'GET',
            cache: false,
            data: { clientId: clientId },
            success: function(result) {
                $('#storeName').val(result.storeName);
            }
        });
    });
});
于 2012-10-19T12:01:55.020 に答える