0

我是 MVC 的新手。我不知道如何将可以具有不同类型的属性绑定到单选按钮,例如:

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; }
}

那是; 一个人有某种工作。现在我喜欢有一个视图,用户可以在其中选择一个人的工作。我想使用单选按钮来显示所有可用的工作类型。我还希望将人员当前的工作类型选择为默认值,当然我希望该人在回发时更新她的工作类型。我正在尝试使用 Razor。你会怎么做?

4

1 回答 1

1

我会有一个string带有作业类型标识符的模型属性:

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

然后,您可以在视图中创建一堆单选按钮,其中的值都是可用的作业类型。然后,利用工厂类:

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

希望这可以帮助。

于 2013-06-22T21:50:31.933 回答