如何在MVC剃刀视图中设置在编辑模式下选中的单选按钮

sus*_*ama 18 razor asp.net-mvc-4

我是MVC剃须刀的新手.我正在尝试编辑网页.其中我有两个单选按钮.我成功保存单选按钮值的数据.但是当我尝试编辑该值时,我无法选择保存数据的单选按钮.我有性别的枚举

public enum Gender
{
    Male,
    Female
}
Run Code Online (Sandbox Code Playgroud)

我的创建代码是: -

<div class="editor-label">
   @Html.LabelFor(model => model.gender)
</div>
<div class="editor-field">
   @Html.RadioButtonFor(x => x.gender, (int)Gender.Male) Male
   @Html.RadioButtonFor(x => x.gender, (int)Gender.Female) Female
</div>
Run Code Online (Sandbox Code Playgroud)

编辑代码就像

<div class="editor-label">
   @Html.LabelFor(model => model.gender)
</div>
<div>
   @if (Model.gender == (int)Gender.Male)
   {
   @Html.RadioButtonFor(model => model.gender, "Male", new { @checked = true })
   @Html.Label("Male")
   @Html.RadioButtonFor(model => model.gender, "Female")
   @Html.Label("Female")
   }
   else
   {
   @Html.RadioButtonFor(model => model.gender, "Male")
   @Html.Label("Male")
   @Html.RadioButtonFor(model => model.gender, "Female", new { @checked = true })
   @Html.Label("Female")
   }
</div>
Run Code Online (Sandbox Code Playgroud)

小智 37

你写得像

@Html.RadioButtonFor(model => model.gender, "Male", new { @checked = true }) and
@Html.RadioButtonFor(model => model.gender, "Female", new { @checked = true })
Run Code Online (Sandbox Code Playgroud)

在这里,您将性别作为一种Enum类型,并且您已将单选按钮的值写为string类型 - 将"男性"更改为0,将"女性"更改为1.

  • 两个单选按钮都有`checked ="true"` (8认同)

arv*_*man 13

不要在视图级别执行此操作.只需在视图模型的构造函数中将默认值设置为该属性即可.干净简单.在您的回发中,您选择的值将自动填充正确的选择.

例如

public class MyViewModel
{
        public MyViewModel()
        {
            Gender = "Male";
        }
}
Run Code Online (Sandbox Code Playgroud)

<table>
  <tr>
	<td><label>@Html.RadioButtonFor(i => i.Gender, "Male")Male</label></td>
	<td><label>@Html.RadioButtonFor(i => i.Gender, "Female")Female</label></td>
  </tr>
 </table>
Run Code Online (Sandbox Code Playgroud)


小智 5

这是获取选中单选按钮的值并根据编辑表单中的值设置选中单选按钮的代码:

控制器:

[HttpPost]
public ActionResult Create(FormCollection collection)
{
    try
    {
        CommonServiceReference.tbl_user user = new CommonServiceReference.tbl_user();
        user.user_gender = collection["rdbtnGender"];
        return RedirectToAction("Index");
    }
    catch(Exception e)
    {
        throw e;
    }
}

public ActionResult Edit(int id)
{
    CommonServiceReference.ViewUserGroup user = clientObj.getUserById(id);
    ViewBag.UserObj = user;
    return View();
}
Run Code Online (Sandbox Code Playgroud)

看法:

创建:

<input type="radio" id="rdbtnGender1" name="rdbtnGender" value="Male" required>
<label for="rdbtnGender1">MALE</label>
<input type="radio" id="rdbtnGender2" name="rdbtnGender" value="Female" required>
<label  for="rdbtnGender2">FEMALE</label>
Run Code Online (Sandbox Code Playgroud)

编辑:

<input type="radio" id="rdbtnGender1" name="rdbtnGender" value="Male" @(ViewBag.UserObj.user_gender == "Male" ? "checked='true'" : "") required>
<label for="rdbtnGender1">MALE</label>

<input type="radio" id="rdbtnGender2" name="rdbtnGender" value="Female" @(ViewBag.UserObj.user_gender == "Female" ? "checked='true'" : "") required>
<label for="rdbtnGender2">FEMALE</label>
Run Code Online (Sandbox Code Playgroud)