【问题标题】:Autocomplete in MVCMVC 中的自动完成
【发布时间】:2013-02-12 09:24:33
【问题描述】:

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

我的 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;
    }
}

公开课职业列表 { 公共 int ProfessionID { 获取;放; } 公共字符串专业{得到;放; } }

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

我知道那行不通。因为文本框(名称,值) 期望一些价值.. 那么我如何在没有任何 ajax 函数的情况下获得该列表..?

附言: 我的 util 类不是从控制器派生的.. 只是一个类

【问题讨论】:

    标签: asp.net-mvc autocomplete


    【解决方案1】:

    我假设您在此处涉及一些您刚刚决定不提及的客户端代码——您将需要一些。 HTML 不支持自动完成。

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

    【讨论】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      • 2011-01-24
      相关资源
      最近更新 更多