<select>表示许多实体

时间:2016-10-30 08:40:11

标签: c# asp.net-core model

我有一个Aircraft和FleetItem模型的模型: Aircraft.cs: 公共级飞机:IDbEntity {     [键]     public int Id {get;组; }     public string Type {get;组; }     public int? MaxAltitude {得到;组; }     public int? MaxSpeed {得到;组; }     public int? NOfFirstClassSeats {get;组; }     public int? NOfBusinessClassSeats {get;组; }     public int? NOfEconomyClassSeats {get;组; } } FleetItem.cs: 公共类FleetItem:IDbEntity {     [键]     public int Id {get;组; }     public string RegNumber {get;组; }     public int AirplaneId {get;组; }     [ForeignKey的(&#34; AirplaneId&#34)]     公共虚拟飞机飞机{get;组; } } 所以,实际上 - FleetItem包含飞机的外键和飞机的注册号(regnumber是唯一的)。 查看我现在拥有的Index.cshtml: @model Core.Models.FleetItem @ {     ViewData [&#34; Title&#34;] = $&#34;将新飞机添加到舰队&#34 ;; } &LT; H2&GT; @ViewData [&#34;名称&#34;]&LT; / H2&GT; &lt; form method =&#34; post&#34; ASP-控制器=&#34;舰队&#34; ASP-动作=&#34;添加&#34; ASP-防伪=&#34;真&#34;&GT;     &lt;! - todo add plane select - &gt;     &lt; div class =&#34; form-group&#34;&gt;         &lt; label asp-for =&#34; RegNumber&#34; class =&#34; control-label&#34;&gt;注册号码:&lt; / label&gt;         &lt;输入asp-for =&#34; RegNumber&#34;类=&#34;形状控制&#34;类型=&#34;文本&#34; /&GT;         &lt; span asp-validation-for =&#34; RegNumber&#34;&gt;&lt; / span&gt;     &LT; / DIV&GT;     &lt; div class =&#34; form-group&#34;&gt;         &lt;输入类型=&#34;提交&#34;值=&#34;添加&#34; class =&#34; btn btn-default&#34; /&GT;     &LT; / DIV&GT; &LT; /形式&GT; 我需要将FleetItem与飞机联系起来。 我发现的解决方案:选择所有飞机并将其传递到视图中并使用&lt; select&gt;输出它。 当我有几架飞机时,这个解决方案是合适的。但是,如果我有1000多架飞机?它对于&lt; select&gt;来说太大了名单。所以,我想到任何返回飞机的搜索。它会很棒。但是,如何实现呢?我认为这个解决方案存在,但我无法找到它。 或者你能建议最好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

就用户体验而言,最佳选择是添加一个搜索框,该搜索框将继续在飞行中过滤您的飞机,即它将向服务器发出请求以显示前10个元素。这是实现此类功能的常用方法。

我不确定您是否可以直接在MVC模型中轻松实现,但如果您有一些客户端框架,则可以使用它来实现此目的。例如。您可以使用能够执行此类操作的常用select2控件。正如它的名字所暗示的那样,它比普通的选择有所改进,可以添加你需要的所有东西。

当然,您可以自己实现它,以获得普通输入和div弹出窗口的简单案例。

P.S。你可以谷歌一点点如何将select2与MVC连接,例如here。但通常它不应该是一个大问题,因为它只是web api中的一些AJAX请求,你需要支持数据+一些客户端脚本将它连接到你的模型。