Я хочу что-то сделать, вызвав следующее действие Find
в CityController
.
Я могу поставить точку останова и посмотреть, все ли хорошо, данные передаются клиенту.
Автозаполнение рода работ при выборе элемента; оно становится пустым и вызывает странное исключение Javascript.
Несмотря на то, что автозаполнение является частью пользовательского файла js-1.8.9.custom, мне все равно нужно предоставить ему сценарий удара.
Когда я выбираю City
, я хочу заполнить CityId
, чтобы я мог продолжить другой поиск.
<link type="text/css" href="/Content/jquery-ui-1.8.9.custom.css" rel="stylesheet" />
<script src="../../Scripts/jquery-1.4.4.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.9.custom.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.autocomplete.js" type="text/javascript"></script>
<div class="ui-widget" style="float:right">
<label for="city">City: </label>
<%= Html.TextBox("city") %>
</div>
$("input#city").autocomplete('<%= Url.Action("Find", "City") %>', {
dataType: 'json',
parse: function(data) { alert(data.toString);
var rows = new Array();
for(var i=0; i<data.length; i++){
rows[i] = { data:data[i], value:data[i].CityName, result:data[i].CityId };
}
return rows;
},
formatItem: function(row, i, n) {
return row.CityName ;
},
width: 300,
mustMatch: true,
});
public class CityController : Controller
{
//
// GET: /City/
public ActionResult Find(string q)
{
var data = from s in DataProvider.CityNames
where s.Name.ToLower().StartsWith(q.ToLower())
select new {CityId=s.ID, CityName =s.Name};
var x = data.ToList();
return Json(x,JsonRequestBehavior.AllowGet);
}