2010-07-26 79 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

相关问题