MVC中的自动完成功能

时间:2013-02-12 00:26:12

标签: asp.net-mvc autocomplete

我想制作一个自动填充文本框。但它会有点不同。让我解释..

我的util类中有一个静态方法。我从那里填充组合框..例如

cs code here

public class MyUtil
{
   public static List<ProfessionList> GetProfessionList()
    {
       var liste= EntityHelper.GetProfessionList(false); 
        var profList = new List<ProfessionList>();

        foreach (KeyValuePair<int, string> profession in liste)
profList.Add(new ProfessionList(){
                                  Profession = profession.Value,
                                  ProfessionID = profession.Key
                                  });
        }               
        return profList;
    }
}

公共类ProfessionList     {         public int ProfessionID {get;组; }         public string Profession {get;组; }     }

和html侧

@Html.DropDownList("cmbProfessions", new SelectList(MyUtil.GetProfessionList(),
"ProfessionID", "Profession"))

所以它非常好..我想在文本框中使用相同的方法进行自动填充。我不想使用任何ajax函数或类似..

我的cs代码

  public static List<SpecificTagList> GetSpecificTagList()
    {

        var list = EntityHelper.GetSpecificTagList();
        var tagList = new List<SpecificTagList>();
        foreach (string s in list)
        tagList.Add(new SpecificTagList(){SpecificTag = s});

        return tagList;

    }

public class SpecificTagList
{
public string SpecificTag { get; set;}    
}

和html

 @Html.TextBox("txtSpecific", new { autocomplete = new
 SelectList(MyUtil.GetSpecificTagList(), "SpecificTag", "SpecificTag") })

我知道那不起作用。因为TextBox(名称,值) 期待一些价值......以及如何在没有任何ajax功能的情况下获得该列表..?

P.S。 :我的util类不是从控制器派生的......只是一个类

2 个答案:

答案 0 :(得分:1)

我假设你有一些客户端代码涉及到你刚刚决定不提的地方 - 你需要一些。 HTML不支持自动完成。

如果您不想使用AJAX,请使用列表填充隐藏控件并在JavaScript中实现某种自动完成

答案 1 :(得分:1)

我用乔纳森先生的方式解决了我的问题。谢谢。

<script type="text/javascript">

$(function () {

    var specifiList=[];
    $('#hiddenspecif').find('option').each(function () {

        specifiList.push($(this).val());
    });

    $('#c2').autocomplete({
        source: specifiList
    }
    );

});   
</script>


@Html.TextBox("c2");

@Html.DropDownList("hiddenspecif",
new SelectList(MyUtil.GetSpecificTagList(),"SpecificTag","SpecificTag"),
new {style="display:none"})