我是 MVC 的新手,并试图在文本框上自动完成以返回建议的 MemberNames。我有两个问题(问题 1 - 将用户的初始文本字符输入控制器,问题 2 - 将返回的控制器名称列表显示在文本框下方)。
看法:
@section scripts{
<script type="text/javascript">
$(document).ready(function () {
$("#autocomplete").autocomplete({ source: '@Url.Action("MemberList", "Grievances", new { autocomplete = $("#autocomplete").val() })' });
});
</script>
}
...
<input id="autocomplete">
问题 1 - 在上面的视图中,如果我没有为 @Url.Action 输入第三个参数,我的控制器会收到 null 的参数值(即使一堆网站告诉我自动完成自动绑定这个值,它没有这样做)。
如果我为第三个参数输入硬代码,如下所示:
new { autocomplete = "ead" }
然后控制器接收“ead”作为参数值。如果我在上面的代码块中输入代码,则网站会出错,并在第三个参数中抱怨“意外字符'$'”。
Question1 - 如何将自动完成文本框的值传递给控制器?
问题 2 - 这是我的控制器代码
public ActionResult MemberList(string autocomplete)
{
var memberNames = (from p in context.Members
where p.MemberName.Contains(autocomplete)
select p.MemberName).Distinct().Take(10);
string content = string.Join<string>("\n", memberNames);
return Content(content);
}
当我将一个值(如'ead')硬编码到上面视图中的第三个参数中时,我会在控制器中获得该值。控制器从数据库中检索适当记录的列表,然后我将其返回给视图。但是,文本框下方没有显示任何内容。我确实在视图中包含了必要的 JavaScript 和 CSS 文件;如果我对值列表进行硬编码,它们会适当地显示在文本框下。只有控制器无法从中获取结果。
Question2 - 如何让控制器返回值列表,以便自动完成文本框显示它们?
非常感谢您对这两个问题的帮助。我觉得我只是在泥泞中旋转我的轮子让自动完成工作。