2016-02-02 4 views
0

Я хочу загрузить внешний файл Json File, который содержит название города. Я хочу показать его в опции поиска в Index.cshtml.My Json file look например,Загрузить данные Json из внешнего файла с помощью ASP.NET MVC

CityName[ 
    { 
    "City": "Flensburg" 
    }, 
    { 
    "City": "Kiel" 
    }, 
    { 
    "City": "Lübeck" 
    }, 
    { 
    "City": "Neumünster" 
    } 
] 

Теперь я создал City class внутри модели, чтобы получить название от этого объекта.

public class City 
    { 
    public string City { get; set; } 
    } 

My Controller Класс выглядеть this-

public class HomeController : Controller 
{ 
    public ActionResult Search(string name) 
    { 

     return View(); 
    } 
} 

Теперь для вида я использовал Javascript и создал одну форму поиска с помощью кнопки, как this-

<div class="search-form"> 
    <form action="index.html" method="get"> 
    <div class="input-group"> 
     <input type="text" placeholder="Enter Location Name" name="search" class="form-control input-lg"> 

     <div class="input-group-btn"> 
      <button class="btn btn-lg btn-primary" type="submit"> 
       <a href="@Url.Action("Search", "Home")">Search</a> 

       </button> 
      </div> 
     </div> 

    </form> 
    </div> 

Теперь я хочу установить название города в опции поиска. Но поскольку я очень новичок в обработке MVC, я не уверен, как это сделать.

ответ

0

Я думаю, вы должны предоставить выпадающее меню с доступными городами вместо ввода текста. В качестве альтернативы используйте автозапуск. Вот решение с выпадающим списком.

Во-первых, вы должны создать два Действия: один для отображения страницы изначально [HttpGet] и один для обработки сообщения формы [HttpPost].

Действие GET должно возвращать строго типизированный вид, ViewModel содержит ваши параметры поиска. View отправляет заполненный ViewModel в действие post.

public class SearchViewModel { 

    public City SelectedCity {get; set;} 

    // to be read from JSON 
    public City[] AvailableCities {get; set;} 

    // generate SelectListItems to be used with DropDownListFor() 
    public IEnumerable<SelectListItem> CityOptions { get { 
     foreach (var city in AvailableCities) { 
      yield return new SelectListItem { 
       Value = city.City, 
       Text = city.City, 
       Selected = city == SelectedCity 
      }; 
     } 
    }} 
} 

// GET action 
[HttpGet] 
public ActionResult Search() { 
    var vm = new SearchViewModel(); 
    vm.AvailableCities = // load from JSON 
    return View("Search", vm); 
} 

// Razor View <ControllerName>\Search.cshtml 
@model SearchViewModel 
@using (Html.BeginForm("Search", "<ControllerName>", FormMethod.Post)) { 
    @* render Cities dropdown; bind selected value to SelectedCity *@ 
    @Html.DropDownListFor(m => m.SelectedCity, Model.CityOptions) 
    <button class="btn btn-lg btn-primary" type="submit">Search</button> 
} 

// POST Action 
[HttpPost] 
public ActionResult Search(SearchViewModel vm) { 
    var selected = vm.SelectedCity; 
    // search ... 
} 

"Имя контроллера" должно быть именем контроллера, реализующего действия, например. "Главная".

+0

Моя очередь была также в том, как я могу загрузить Json-файл для поиска в поиске. Я сохранил внешний файл в формате .json. так как я могу прочитать эти данные в vm.AvailableCities = // загрузить из строки JSON. –

+0

См. Здесь, как читать и разбирать JSON из файла: http://stackoverflow.com/questions/13297563/read-and-parse-a-json-file-in-c-sharp –

Смежные вопросы