我是一个从自动完成文本框示例中学习的新手。我不明白的是在我的控制器中的“AutoCompleteHelper”功能中,输入必须命名为“term”。如果我将其命名为其他名称,例如“mystr”或“reqstr”,那么在调试期间,它总是会说输入为“null”。我没有在我的 .js 和 .cshtml 中的其他任何地方定义“术语”。我实际上在 .cshtml 文件中将其命名为 name="q"。是什么让我使用“术语”这个名字?
控制器代码:
string[] txtlst = {"ActionScript", "AppleScript",
"Asp", "BASIC", "C", "C++", "Clojure",
"COBOL", "ColdFusion", "Erlang", "Fortran",
"Groovy", "Haskell", "Java", "JavaScript",
"Lisp", "Perl", "PHP", "Python", "Ruby", "Scala", "Scheme"};
public JsonResult AutoCompleteHelper(string term) {
if (!Request.IsAjaxRequest()) return null;
var lst = txtlst.Where(s => s.StartsWith(term)).ToList();
var res = lst.Select(x => new { value = x, label = x });
return Json(res, JsonRequestBehavior.AllowGet);
}
.js 代码:
$("input[data-autocomplete-source]").each(function () {
$(this).autocomplete({ source: $(this).attr("data-autocomplete-source") });
});
});
.cshtml 代码:
<p>Auto Complete Example</p>
<input type="text" name="q" data-autocomplete-source="@Url.Action("AutoCompleteHelper", "Home")" />
我是否忽略/误解了什么?我不明白为什么我固定使用“术语”作为我的参数名称。