2010-07-26 65 views
2

比方說,我有這個如何在ASP.NET MVC 2中預選一個單選按鈕?

public class OrganisationData 
{ 
    public NavigationData navigationData {get; set; } 
} 

然後

public class NavigationData 
{ 
    public string choice {get;set;} 
    //other properties omitted 
} 

我有這對我的看法

<% Using(Html.BeginForm()){%> 
    <p> 
     <% = Html.RadioButtonFor(x => x.organizationData.navigationData.choice, "1")%> 
    </p> 
    //More choices 
<%}%> 

第一,用戶得到這種看法我想第一個單選按鈕被預選。

感謝您的幫助。

回答

1

您應該從您的GET控制器操作中設置發送到viewengine的模型中的值。

類似:

ActionResult MyMethod() 
{ 
    var vm = new OrganisationData { NavigationData = new NavigationData{ choice = 1 } }; 
    return View("myview", vm); 
} 

不要把邏輯視圖約翰指出,這是一個巨大的設計反模式,只會因爲你從長遠來看,榮辱與共。

編輯:

通過將默認從控制器的觀點意味着控制器已經作出的決定,以默認的是什麼。這是邏輯,因此不屬於視圖。在控制器中做它可以測試。

+0

。我沒有把邏輯放在視圖中,而是使用方法RadioButtonFor的HTMLAttributes爲視圖創建了一個默認值。視圖加載時,您的解決方案不會檢查收音機。 – 2010-07-26 13:41:33

+0

將它設置爲與htmlattributes一起檢查是邏輯在視圖中。如果你說radiobuttonfor不會自動檢查複選框,如果它指向的屬性具有單選按鈕所代表的值,那麼它就像平常一樣扼殺ms代碼。很高興我不使用webforms視圖引擎! :) – 2010-07-26 13:51:49

+0

布魯克:它的工作。 – Richard77 2010-07-26 16:03:07

2

設置第一個單選按鈕的HTMLAttributes對象。

<% Using(Html.BeginForm()){%> 
    <p> 
     <% = Html.RadioButtonFor(x => x.organizationData.navigationData.choice, 
       "1", 
       new[] {checked="checked"})%> 
    </p> 
    //More choices 
<%}%> 
+0

John Hartstock:我遇到了一些奇怪的錯誤,比如「一個匿名類型不能有多個同名的屬性」,還有兒子。 – Richard77 2010-07-26 16:02:35

+0

看看我上面的編輯。對不起,我忘了用引號括起來的值 – 2010-07-26 17:17:55

+0

Hartstock:它仍然不起作用。我不明白。我仍然收到他要求預選或檢查第一個單選按鈕的錯誤 – Richard77 2010-07-29 11:49:49

相關問題