【发布时间】:2016-02-04 09:03:13
【问题描述】:
我制作了一个 json 文件,其中包含一个国家/地区的城市名称。我想使用 MVC 将这些城市名称显示为 View 上的自动完成搜索。我的 Cityname.Json 文件如下所示 -
Cityname[
{
"id": 1,
"City": "Flensburg"
},
{
"id": 2,
"City": "Kiel"
},
{
"id": 3,
"City": "Lübeck"
},
{
"id": 4,
"City": "Neumünster"
},
{
"id": 5,
"City": "Brunsbüttel"
}
]
我的城市对象模型类是-
public class City
{
public string id{get:set;}
public string City { get; set; }
}
在我的动作结果索引中的主控制器中,我反序列化 Json 文件以显示在视图中
public ActionResult Index()
{
using (StreamReader r = new StreamReader("file.json"))
{
string json = r.ReadToEnd();
List<CityName> items = JsonConvert.DeserializeObject<List<CityName>>(json);
}
return View();
}
现在查看我制作的搜索框类,我想在其中以自动完成的方式获取所有城市名称。但我不知道如何处理它
<div class="search-form">
<form action="index.html" method="get">
<div class="input-group">
<input type="text" placeholder="Enter Location Name" name="search" id="CitySearch" class="form-control input-lg">
<div class="input-group-btn">
<script type="text/javascript" src="~/App_Data/Cityname.josn">
$(function () {
$("#CitySearch").autocomplete
});
</script>
<button class="btn btn-lg btn-primary" type="submit">
<a href="~/Home/Search">Search</a>
</button>
</div>
</div>
</form>
我的 _Layout.cshtml 文件如下所示-
@using OpenStreetMapService.Helpers
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Call List Service | @ViewBag.Title</title>
<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700' rel='stylesheet' type='text/css'>
<!-- Add local styles, mostly for plugins css file -->
@if (IsSectionDefined("Styles"))
{@RenderSection("Styles", required: false)}
<!-- Add jQuery Style direct - used for jQGrid plugin -->
<link href="@Url.Content("~/Scripts/plugins/jquery-ui/jquery-ui.css")" rel="stylesheet" type="text/css" />
<!-- Primary Inspinia style -->
@Styles.Render("~/Content/css")
@Styles.Render("~/font-awesome/css")
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"></script>
</head>
<body>
<!-- Skin configuration box -->
@*@Html.Partial("_SkinConfig")*@
<!-- Wrapper-->
<!-- PageClass give you ability to specify custom style for specific view based on action -->
<div id="wrapper" class="@Html.PageClass()">
<!-- Navigation -->
@Html.Partial("_Navigation")
<!-- Page wraper -->
<div id="page-wrapper" class="gray-bg @ViewBag.SpecialClass">
<!-- Top Navbar -->
@Html.Partial("_TopNavbar")
<!-- Main view -->
@RenderBody()
<!-- Footer -->
@Html.Partial("_Footer")
</div>
<!-- End page wrapper-->
<!-- Right Sidebar -->
@Html.Partial("_RightSidebar")
</div>
<!-- End wrapper-->
<!-- Section for main scripts render -->
@Scripts.Render("~/bundles/jquery")
@*@Scripts.Render("~/plugins/jquery-ui/jquery-ui.min.js")*@
@Scripts.Render("~/bundles/bootstrap")
@Scripts.Render("~/plugins/slimScroll")
@Scripts.Render("~/bundles/inspinia")
<!-- Skin config script - only for demo purpose-->
@Scripts.Render("~/bundles/skinConfig")
<!-- Handler for local scripts -->
@RenderSection("scripts", required: false)
</body>
</html>
【问题讨论】:
-
我认为您无需编写服务器端代码即可将这些恒定的自动完成数据提取到您的文本框中。您可以使用轻量级前端工具,例如 jQuery,它将读取您的 JSON 文件并在自动完成功能中显示。请参阅 pontikis.net/blog/jquery-ui-autocomplete-step-by-step 以获取一个很好的示例。只关注链接内容的 JSON 和 JavaScript 部分。
-
@mhmtztmr:根据您给定的网站,我已将 Cityname.json 存储在 app_Data 文件夹中,并在编码部分修改了我的 javascript。但它不起作用
-
@mhmtztmr:嗨,我只是在尝试,但我的代码没有得到任何结果。你能检查一下并告诉我应该怎么做才能在自动搜索中获取城市名称
标签: c# json asp.net-mvc asp.net-mvc-4