使用Jquery自动完成

时间:2012-03-03 01:08:58

标签: jquery asp.net-mvc-3

我下载了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>

1 个答案:

答案 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你最好创建一个视图模型并包含你的“教师类型”。