我尝试使用jQuery UI自动完成小部件http://jqueryui.com/demos/autocomplete/#remote来实现asp.net文本框。
小部件的source属性要求字符串指向将返回JSON数据的URL资源。我有一个aspx页面将返回以下内容:
背后的代码:
private void GetWidgets(string name)
{
var jscriptSerializer = new JavaScriptSerializer();
var widgets = jscriptSerializer.Serialize(GetMatchingWidgets(name));
var script = "Widgets = {\"Widget\": " + widgets + "};";
Page.ClientScript.RegisterStartupScript(Page.GetType(), "JSON", script, true);
}
问题:
The request parameter "term" gets added to that URL.
- 我应该能够将“term”作为查询字符串参数正确吗?我错过了什么吗?
我会试一试,只是“搞清楚”但我没有足够的时间花在这个解决方案上。
总是感谢帮助。
答案 0 :(得分:1)
是的,term
是QueryString参数的名称。您需要做的就是以预期的格式返回json数据。例如,这是我使用的类......
/// <summary>
/// JQuery UI Autocomplete plugin expects an object with "value" and/or "label" property.
/// </summary>
public class AutoCompleteData
{
/// <summary>
/// custom property
/// </summary>
public string id { get; set; }
/// <summary>
/// value is shown in text box after selection
/// </summary>
public string value { get; set; }
/// <summary>
/// label is shown in drop down list
/// </summary>
public string label { get; set; }
}
例如......
string term = Request.QueryString["term"];
AutoCompleteData[] d = GetMatchingWidgets(term)
.Select(x => new AutoCompleteData {
label = x.widgetLabel,
value = x.widgetValue
}).ToArray();
return jscriptSerializer.Serialize(d);