ASP.NET与EF,如何自动完成文本字段从数据库中查找

时间:2013-04-18 02:22:23

标签: asp.net-mvc entity-framework

我甚至不确定如何搜索这个 - 我正在使用带有EF的.NET MVC 4,我有两个简单的模型,具有一对多的关系 - 公司和位置。公司可以有许多地点(例如,澳大利亚,美国,加拿大等)

我想创建一个包含文本字段的表单,用户可以在该字段中输入逗号分隔的位置列表,这些列表可以自动填充现有位置,也可以为新位置添加新位置。

也就是说,如果他们开始输入“Aus”并且Austrlia和Austria都在Locations数据库表中,那么应该向用户显示这些内容以供选择 - 就像StackOverflow对Tags一样。但是如果他们键入数据库表中尚不存在的位置,那么这应该创建一个新记录。

任何指针都会非常感激!

谢谢, 罗比

1 个答案:

答案 0 :(得分:2)

我会在渲染视图之前从DB读取所有位置,并在JSON结构中序列化它们,或者在渲染视图中将它们序列化为简单的JavaScript数组。这将在jQuery的帮助下用于客户端的自动完成(你可以使用一个插件,但应该足够简单,只需要你需要的东西。我不会通过使用某种Ajax调用来复杂化服务器由keydown事件触发。

提交表单后,显然位置字段的内容将只是文本。因此,您需要在数据库中查找该位置,如果没有返回任何内容,则需要在保存公司记录之前添加它。

我不知道您的确切型号,但代码看起来像这样:

var location = db.Locations.Find(l => l.LocationName == valueThatWasSubmitted);
if (location == null) 
{
    // save new location
} 
// location exists, proceed with the rest (saving the company, etc.)