如果我问一个新手问题,我很抱歉,但我是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是教授。我的控制器暂时是空的,因为我不知道该写什么。
答案 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
应与视图中的单选按钮名称相同,这是为了让数据绑定正常工作