2013-02-12 91 views
0

我想创建自动完成文本框。但它会有点不同。让我解释一下。MVC中的自动完成

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

公共类ProfessionList { 公众诠释ProfessionID {获得;组; } 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. :我的工程类没有从控制器派生..只是一个类

回答

1

我假设你有一些客户端代码涉及到某处,你只是决定不提 - 你需要一些。 HTML不支持自动完成。

如果你不希望使用AJAX,然后填充一个隐藏的控制与列表并实现某种自动完成的在JavaScript

+0

感谢您的关注。这里有一个示例http://jqueryui.com/autocomplete/我可以从那里创建这种类型的数组吗?你所说的方式看起来有点奇怪..但它也可能..实际上我想做的最好,你建议我做什么? thanx – ertan2002 2013-02-12 00:43:55

+2

您当然可以使用隐藏控件来实现该代码。显然,你必须修改它,因为链接中的示例在JavaScript代码中声明了正确的列表。您也可以动态生成JavaScript,以便代码包含列表项。这两种方式都应该可以正常工作,但动态生成JavaScript可能会使代码变得更复杂一些。 – 2013-02-12 00:48:05

+0

让我尝试使用一个隐藏的控件:)谢谢你的有用答案.. – ertan2002 2013-02-12 00:50:13

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

不要忘记标记乔纳森的答案作为接受的:) – amhed 2013-02-12 04:34:44