2013-02-12 111 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