2010-05-16 65 views
17

我有了這樣的如何在asp.net mvc 2.0中使用Html.DropDownListFor幫手時更改id值?

現在你可以創建一個新的產品和修改現有產品的局部視圖。編輯和創建都使用相同的格式。創建在加載的主頁上。編輯在jQuery UI模型對話框中彈出並呈現新的局部視圖。

所以就頁面而言,我有2個相同的「ID」下拉框,這是壞的,因爲它們應該是唯一的。那麼如何更改ID?所以當編輯加載它可能有一個「editSelectedProductName」的ID?

我試圖做到這一點的視圖模型

public string SelectedProductName{ get; set; } 

ViewModelConstructor() 
{ 
    SelectedProductName = "EditSelectedProductName"; 
} 

但似乎並不在意,並不斷使用「SelectedProductName」作爲產品名稱

+0

我的教程博客展示瞭如何做到這一點http://blogs.msdn.com/b/rickandy/archive/2012/01/09/cascasding-dropdownlist -in-asp-net-mvc.aspx和http://www.asp.net/mvc/tutorials/javascript/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with -aspnet-mvc – RickAndMSFT 2012-04-18 17:08:37

回答

34

我找不到此刻的文檔,但對於DropDownListFor過載,將接受屬性的類型對象的集合(HtmlAttributes的參數名稱。)

它會是這個樣子:

Html.DropDownListFor(model=>model.SomeProperty, new {@id="UniqueID1234"}); 

您可以使用Intellisense查找包含HtmlAttributes的重載。

+0

我知道它有htmlAttributes屬性,但在你的例子中你對它進行了硬編碼。我無法對它進行硬編碼,因爲我在兩種情況下都使用了相同的partialview。我只能看到,我必須在視圖數據模型中創建一個特殊的屬性來保存id。我希望我不會那樣做。 – chobo2 2010-05-16 02:11:21

+0

另一點需要提及的是,即使你試圖覆蓋它,那個列表的「名稱」屬性仍然是「SelectedProductName」@name =「NotIdName」,雖然有點糟糕,但我認爲它不會影響事物(至少我希望不是)。 – chobo2 2010-05-16 02:15:50

+0

戴夫,我不能重寫名稱屬性,你知道一種方式嗎? – 2013-07-14 09:10:56

1

您可以使用硬編碼的jQuery:

$('select#[id of your select box]').attr('id', '[id that you want]'); 
相關問題