MVC с автозаполнением не работает - PullRequest
0 голосов
/ 17 августа 2011

У меня есть этот код, который выполняет автозаполнение, но, видимо, я делаю что-то не так, поскольку он не работает.

Это мой взгляд:

@Html.EditorFor(model => model.city)<br />
@Html.ValidationMessageFor(model => model.city)

<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js' type="text/javascript"></script>
<script src='<%: Url.Content("~/Scripts/jQueryUI/jquery-ui-1.8.2.custom.min.js") %>'
    type="text/javascript"></script>
<script type="text/javascript">    
    $("#city").autocomplete({
        source: '<%: Url.Action("Location", "CityList") %>'
    });        
</script>

Это мой контроллер:

public class LocationController : Controller
{
    private pEntities db = new pEntities();

    public ActionResult CityList(string city)
    {
        var results = from c in db.CityCodes
                      where c.city.StartsWith(city)
                      select new { label = c.city, id = c.city_id };
        return Json(results.ToArray(), JsonRequestBehavior.AllowGet);
    }

Ответы [ 2 ]

5 голосов
/ 17 августа 2011

Я думаю, что ваша проблема заключается в следующем:

Url.Action("Location", "CityList")

Url.Action сначала берет имя действия, а затем "имя" контроллера. Я нахожу это нелогичным. Сделайте это вместо:

Url.Action("CityList", "Location")

Обновление:

Я просмотрел документацию для плагина jQuery для автозаполнения, и похоже, что ваш контроллер должен принимать параметр с именем term, а не city. Возможно, это другая половина проблемы, с которой вы столкнулись.

public ActionResult CityList(string term)
{
    // ...
}
0 голосов
/ 17 августа 2011

первая проблема была Url. Действие не было решено внутри javascript, а вторая проблема, как сказал Джейкоб, заключалась в том, что я должен был использовать термин.

я просто использовал ниже URL вместо действия URL.

$ ("# city"). Autocomplete ({источник: 'Location / CityList'});

...