【发布时间】:2009-12-24 08:37:39
【问题描述】:
我在一个 mvc 网页上有两个 jQuery 自动完成文本框。一个返回问题列表,另一个返回标签列表。
问题文本框完美运行,但标签文本框仅向其控制器发送空字符串。
jQuery javascript 与 Url.Action 完全匹配,无效的显示如下:
<script type="text/javascript">
$(document).ready(function() {
$('#searchTag').autocomplete('<%= Url.Action("AutoComplete", "Tags") %>', {
dataType: 'json',
parse: function(data) {
var rows = new Array();
for (var i = 0; i < data.length; i++) {
rows[i] = { data: data[i], value: data[i].Name, result: data[i].Name };
}
return rows;
},
formatItem: function(row) {
return row.Name;
},
delay: 40,
autofill: true,
selectFirst: false,
highlight: false,
multiple: true,
multipleSeparator: ";"
});
});
</script>
标签控制器被调用并正确返回 Json 数据,因为我已将“b”字符串参数硬编码到 LookUpTag 方法以确保,但自动完成的字符串 t 参数始终为空。
public ActionResult AutoComplete(string t)
{
IQueryable<Tag> searchResults = tagRepository.LookUpTag("b");
var data = (from searchResult in searchResults
select new { Id = searchResult.ID, Name = searchResult.Name }).ToList();
return Json(data);
}
这有什么合乎逻辑的原因吗?
【问题讨论】:
-
我会做两件事:1) 使用 firebug 或 Fiddler 检查请求的 URL 是否正是我所期望的。 2) 确保您的 MVC 路由正确地通过参数...
标签: jquery asp.net-mvc autocomplete