如何在我的控制器中看到已检查过哪些单选按钮?

时间:2014-10-28 15:53:26

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

如果我问一个新手问题,我很抱歉,但我是asp.net mvc的新手。

所以,我有这个观点:

@model FirstProject.Models.SelectRolesViewModel
@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

@using (Html.BeginForm("SelectRolesOverall","SelectRoles"))
{
    <table class="table">
        <tr>
            <th>Users</th>
            <th>Roles</th>
        </tr>
        @Html.EditorFor(model=>model.UsersAndRoles)
        <tr>
            <td></td>
            <td>
                <input type="submit" />
            </td>
        </tr>
    </table>
}

编辑模板:

@model FirstProject.Models.UserRole

    <tr>
        <td>@Model.User.UserName</td>
        <td>
            @Html.RadioButtonFor(model => model.Role, "Applicant") Applicant
            <br/>
            @Html.RadioButtonFor(model => model.Role, "Professor") Professor
        </td>
    </tr>

我的问题是:在按下提交按钮后,如何查看控制器中的单选按钮?我希望有以下逻辑:如果已选择申请人,那么userRole是申请人,否则如果已选择教授,则userrole是教授。我的控制器暂时是空的,因为我不知道该写什么。

2 个答案:

答案 0 :(得分:1)

如果您的操作方法是

public SelectRolesOverall(SelectRolesViewModel model)

然后您可以使用

访问该集合
IEnumerable<UsersAndRoles> usesAndRoles = model.UsersAndRoles;

并访问集合中的每个项目

foreach (UserRole userRole in model.UsersAndRoles)
{
  string role = userRole.Role;
  string name = userRole.UserName; // see note below
}

请注意,您尚未包含属性UserName的输入,因此此值不会回发,您可能无法将角色与用户匹配。您可能希望添加@Html.HiddenFor(m => m.UserName)或将<td>@Model.User.UserName</td>更改为<td>@Html.TextBoxFor(m => m.UserName, new { @readonly = "readonly" })</td>

答案 1 :(得分:0)

试试这个

public ActionResult [YourActionName](string role)
{
   switch(role){
      case "Applicant": /*your applicant logic*/
          break;
      case "Professor": /*your Professor logic*/
          break;
      /*
          Other logic here
      */
}

用您自己的替换动作名称 注意,参数role应与视图中的单选按钮名称相同,这是为了让数据绑定正常工作