我使用c#MVC3&剃刀,实体框架和Linq。
我有一个表单,有两个字段,第一个客户端ID ,第二个商店名称。 我想,当用户输入ID时,我的StoreName字段会自动填充......数据将来自存储这两个数据的数据库。
答案 0 :(得分:1)
你可以使用AJAX。因此,设置一个控制器操作,将客户端ID作为参数,并查询数据库并将相应的商店名称作为JSON结果返回。然后订阅包含商店ID的文本输入的.blur
事件,并向控制器操作发送AJAX调用以填充第二个输入字段。
是的,我知道,没有意义的jibber-jabber,gimme the codez。
下面:
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
事件,并向控制器发出AJAX请求,向其发送用户输入的客户端ID。在成功回调中,您将使用AJAX调用的结果更新第二个文本字段:
$(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);
}
});
});
});