如何在MVC中使用单选按钮列表选择类型?

时间:2013-06-22 21:21:30

标签: c# asp.net-mvc razor types radio-button

我是MVC的新手。我无法弄清楚如何将可以具有不同类型的属性绑定到radiobuttons,例如:

public class Job { public string Name { get; set; } }

public class Carpenter : Job { }

public class Unemployed : Job { }

public class Painter : Job { }

public class Person
{
    public Person() { this.Job = new Unemployed(); }
    public Job Job { get; set; }
}

那是;一个人有某种工作。现在我希望有一个用户可以为一个人选择工作的视图。我想使用radiobuttons来显示所有可用的工作类型。我也希望当前的工作类型被选为默认值,当然我希望这个人在回发时更新她的工作类型。我正在尝试使用Razor。你会怎么做?

1 个答案:

答案 0 :(得分:1)

我会有一个string模型属性,其中包含作业类型的标识符:

public class EmployeeViewModel
{
    public string JobType { get; set; }
}

然后,您可以在视图中创建一组radiobuttons,其中值是所有可用的作业类型。然后,使用工厂类:

public static class JobFactory
{
    public Job GetJob(string id)
    {
        switch (id)
        {
            case "CA":
                return new Carpenter();
            ...
        }
    }
}

然后您可以在控制器中调用它:

public ActionResult MyAction(EmployeeViewModel m)
{
    var person = new Person();
    person.Job = JobFactory.GetJob(m.JobType);
    ...
}

您也可以通过切换枚举的字符串ID并在视图中使用RadioButtonListFor来获益。这里有一个答案可以证明这一点:

https://stackoverflow.com/a/2590001/1043198

希望这有帮助。