2013-07-30 48 views
1

賦予唯一的名稱,我們永遠不必考慮控件ID或唯一名稱。一切webform自動處理。所以告訴我,當我們將名稱分配給html控件的ID時,我該如何提供唯一的名稱?請幫我用一小段代碼如何給webForm中的mvc

只看到它

@Html.DropDownListFor(x => x.Field, ModelClass.MakeSelectListUtenti(Model.Destinations), new { id="Destinations"}) 

這裏我們指定控件ID名稱爲「目的地」但我怎麼能指定一個像「UniqueID_」 +「目的地」的名字?

有人告訴我一個辦法做到這一點像下面

@Html.DropDownListFor(x => x.Field, ModelClass.MakeSelectListUtenti(Model.Destinations), new { id= @guid.NewGuid().ToString() + "Destinations"}) 

我想知道的是,有沒有解決任何其他方式。我聽說mvc4引入了一些新技術。這是真的......那是什麼?

如果可能的話,我還可以通過各種方式在mvc 3/4中生成唯一的客戶端ID。 謝謝

+1

你爲什麼需要這個? – FSou1

回答

0

據我所知,有noway可以做到這一點官方的方式,所以我建議一個jQuery方式:

首先設置一個自定義屬性,而不是ID爲下拉列表如下:

@Html.DropDownListFor(x => x.Field, ModelClass.MakeSelectListUtenti(Model.Destinations), new { originalid="Destinations"}) 

而且這可以把多的時間,然後寫一個腳本在網頁上:

$(document).ready(function() { 
    $("[originalid]").each(function() { 
    var originalid = $(this).attr("originalid"); 
    $(this).attr("id", $("[originalid='" + originalid + "']").index($(this)) + "_" + originalid); 
    }); 
}) 

而且相同的ID將被初始化爲「0_Destinations」「1_Destinations」等

+0

有沒有什麼內置的類在mvc 3/4中做到這一點?你已經證明了這一點,以客戶端腳本來解決它。 – Thomas

0

我不能去VS給你一個代碼示例,但我會做類似於你已經顯示,但使用整數的東西。

我假設ID是一個問題,因爲您正在創建下拉菜單。否則,你顯然會改變文本。

如果您從列表中動態創建下拉列表,可以將其放在for循環中並使用當前編號作爲預編號添加到您的編號中。這會給出一個結果,如id = @myInt +「_Destinations」 - >'0_Destinations','1_Destinations'等。我已經多次使用這種模式。它使得jQuery的選擇變得簡單,並且比Guid ID更加整齊。

如果你沒有遍歷列表,你可以創建一個給你一個數字的方法,然後在一個Id中預先設置好它。