在MVC5+视图中定义一组单选按钮的最优雅的方式是什么?
假设我有一个这样的视图模型
public class ViewModel
{
public bool Value1 {get;set;}
public bool Value2 {get;set;}
}
我想在MVC5+视图上渲染这个,所以它是Value1还是Value2?在WebForms中,我将它们放在一行,并为它们定义一个通用的GroupName属性,而在普通HTML中,我将创建一对输入type=单选,并为它们提供一个通用的"name"属性。使用属性/数据注释在MVC中做到这一点的最佳方法是什么?
谢谢
最好在视图模型类中引用一个类,例如"Employee"。然后将视图模型分配给视图,在视图中可以引用视图模型中的任何类。
下面的例子会给你两个单选按钮,分别为你的问题的"性别"属性选择男性或女性。如果你的问题是"你的性别是什么?"然后用户选择男性或女性。然后在控制器中,您可以询问用户选择的值。
你的ViewModel类应该是这样:
public class ViewModel
{
public Employee Employee {get;set;}
}
你的Employee类应该是:
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")" />
我想在这里添加一些东西
如果您正在使用
,请将[BindProperty]
属性添加到属性Gender
中<input type = radio" name = "ViewModel.Gender" value="Male">
<input type = radio" name = "ViewModel.Gender" value="Female">
在您的cshtml
中像这样使其工作并使用为Gender
选择的值填充输入模型