我下载了jquery自动完成的源文件,以便在MVC3中使用。现在我有一个带有新SelectList(ViewBag.teachertype)的DropDownListFor。
第一个问题:如何更改下面的html代码以使用我的ViewBag?:
@*@Html.DropDownListFor(model => model.Teacher, new SelectList(ViewBag.teachertype), new { style = "width:350px;" })*@
<div class="ui-widget">
<input id="tags" type="text" />
</div>
他们给我的示例函数刚刚硬编码了要放入自动完成的名称。我需要从我的viewbag中提取我的名字。
<script type="text/javascript">
$(function () {
var availableTags = [ "kelly", "joe", "tony", "Billy"];
$("#tags").autocomplete({
source: availableTags
});
});
</script>
答案 0 :(得分:3)
您的“ViewBag”数据必须采用正确的格式才能使自动完成插件正常工作。这是一个将“教师类型”数组转换为javascript数组的快速示例:
public ActionResult Index()
{
var types = new string[] {"Kindergarten", "HighSchool", "preschool" };
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
ViewBag.teachertype = serializer.Serialize(types);
return View();
}
在相关视图中,以下内容将创建一个文本框,该文本框连接到jquery自动完成插件以及控制器中设置的教师类型:
@Html.TextBox("teachertype")
<script type="text/javascript">
$(function() {
var types = @Html.Raw(ViewBag.teachertype);
$("#teachertype").autocomplete({
source: types
});
});
</script>
另外,使用ViewData字典(ViewBag只是一种动态类型)最终会让您感到头痛。 IMO你最好创建一个视图模型并包含你的“教师类型”。