私は c# MVC3 & razor、Entity Framework、Linq を使用しています。
最初のClient ID と 2 番目のStore Nameの 2つのフィールドを持つフォームがあります。ユーザーが ID を入力すると、StoreName フィールドが自動的に入力されます... データは、この 2 つのデータが保存されているデータベースから取得されます。
私は c# MVC3 & razor、Entity Framework、Linq を使用しています。
最初のClient ID と 2 番目のStore Nameの 2つのフィールドを持つフォームがあります。ユーザーが ID を入力すると、StoreName フィールドが自動的に入力されます... データは、この 2 つのデータが保存されているデータベースから取得されます。
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);
}
});
});
});