Asp.net mvc MVC中的自动完成

Asp.net mvc MVC中的自动完成,asp.net-mvc,autocomplete,Asp.net Mvc,Autocomplete,我想制作一个自动完成的文本框。但会有一点不同。让我解释一下 我的util类中有一个静态方法。然后我从那里填充组合框。。比如 这里是cs代码 public class MyUtil { public static List<ProfessionList> GetProfessionList() { var liste= EntityHelper.GetProfessionList(false); var profList = new Lis

我想制作一个自动完成的文本框。但会有一点不同。让我解释一下

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

这里是cs代码

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;
    }
}
  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;}    
}
所以它工作得很好。。我想用同样的方法在文本框中自动完成。我不想使用任何ajax函数或类似的功能

我的cs代码在这里

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;
    }
}
  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;}    
}
我知道那不行。因为文本框(名称、值) 期望有一些价值。。那么,我如何在没有任何ajax函数的情况下获得该列表呢


p、 s:我的util类不是从controller派生的。。只是一个类

我假设您在这里的某个地方涉及到一些客户端代码,您刚刚决定不提这些代码--您将需要一些。HTML不支持自动完成


如果你不想使用AJAX,那么用列表填充一个隐藏控件,并用JavaScript实现某种自动完成功能。

我用Jonathan先生的方式解决了我的问题。多谢各位

<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"}) 

$(函数(){
var specifiList=[];
$('hiddenspect')。查找('option')。每个(函数(){
specifiList.push($(this.val());
});
$('#c2')。自动完成({
资料来源:说明符
}
);
});   
@Html.TextBox(“c2”);
@Html.DropDownList(“hiddenspect”,
新建SelectList(MyUtil.GetSpecificTagList(),“SpecificTag”,“SpecificTag”),
新建{style=“display:none”})

感谢您的关注。这里有一个示例,我可以从那里的函数创建这种数组吗?你说的话看起来有点奇怪。。但也有可能。。其实我想做到最好,你建议我怎么做?Thanxy您当然可以使用隐藏控件实现该代码。显然,您必须修改它,因为链接中的示例在JavaScript代码中声明了正确的列表。您还可以动态生成JavaScript,以便代码包含列表项。虽然动态生成JavaScript可能会使代码更复杂一些,但这两种方法都可以正常工作。非常感谢,我用您所说的解决了我的问题:)