MVC视图和viewmodel radiobutton组

时间:2015-08-10 12:18:38

标签: asp.net-mvc model-view-controller attributes viewmodel data-annotations

在MVC5 +视图中定义一组单选按钮的最优雅方法是什么?

假设我有一个像这样的视图模型

public class ViewModel
{
    public bool Value1 {get;set;}
    public bool Value2 {get;set;}
}

我想在MVC5 +视图上渲染它,以便它的Value1或Value2?在WebForms中,我会将它们放在一行并为它们定义一个公共的GroupName属性,而在纯HTML中,我会创建一对input type = radio并为它们提供一个共同的“name”属性。使用属性/数据注释在MVC中执行此操作的最佳方法是什么?

由于

2 个答案:

答案 0 :(得分:0)

最好有一个类,例如viewmodel类中引用的“Employee”。然后将viewmodel分配给视图,您可以在其中引用viewmodel中的任何类。

下面的例子会给你两个单选按钮,它们会为你的男性或女性提供问题的“性别”属性。如果你的问题是“你的性别是什么?”然后用户选择男性或女性。然后在控制器中,您可以询问用户选择的值。

您的ViewModel类将是:

public class ViewModel
{
    public Employee Employee {get;set;}
}

您的员工类将是:

public class Employee
{
    public string Gender {get; set;}
}

你的控制器就是这样:

using GenderApplication.Models;
public ActionResult Create()
    {
        return View();
    }

[HttpPost]
public ActionResult Create(ViewModel viewModel)
    {
        //whatever you wanted to do with viewModel.Employee.Gender
        return RedirectToAction("Index");
    }

您的观点将是:

@model GenderApplication.Models.ViewModel

@using (Html.BeginForm())
{
@Html.RadioButtonFor(model => model.Employee.Gender, "Male")
<text>True</text>
<br />
@Html.RadioButtonFor(model => model..Employee.Gender, "Female")
<text>False</text>  
<br />
<input type="submit" value="Submit" formaction="@Url.Action("Create")" />

答案 1 :(得分:0)

只是想在这里添加一些东西

如果您正在使用,请将 [BindProperty] 属性添加到属性 Gender

<input type = radio" name = "ViewModel.Gender" value="Male"> 
<input type = radio" name = "ViewModel.Gender" value="Female"> 

像这样在您的 cshtml 中使其工作并使用为 Gender 选择的值填充输入模型