Asp.net mvc 获取视图MVC4中的角色

Asp.net mvc 获取视图MVC4中的角色,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我使用的是MVC4,并且我已经使用EF创建了一个具有创建/读取操作的视图。 我正在尝试获取视图中当前用户的角色。我在“创建”视图中有以下代码: @LabelFor(model=>model.TipoUtilizador) @TextBox(“TipoUtilizador”,System.Web.Security.Roles.GetRolesForUser().Single()) 但是当我单击create时,参数与名称“TipoUtilizador”一起出现,而与角色的名称一起出现(在本例中,

我使用的是MVC4,并且我已经使用EF创建了一个具有创建/读取操作的视图。 我正在尝试获取视图中当前用户的角色。我在“创建”视图中有以下代码:


@LabelFor(model=>model.TipoUtilizador)
@TextBox(“TipoUtilizador”,System.Web.Security.Roles.GetRolesForUser().Single())
但是当我单击create时,参数与名称“TipoUtilizador”一起出现,而与角色的名称一起出现(在本例中,用户具有角色“Student”)。
如何获取角色?当我单击“提交”时,角色的名称进入TipoUtilizador参数?

尝试将分配移动到控制器的HTTP get操作中:

model.TipoUtilizador = System.Web.Security.Roles.GetRolesForUser().Single();
并更改视图:

<div class="editor-field">
   @Html.TextBoxFor(m => m.TipoUtilizador)
</div>

@Html.TextBoxFor(m=>m.TipoUtilizador)

现在调试控制器并查看分配的值会更容易。

尝试将分配移动到控制器的HTTP GET操作中:

model.TipoUtilizador = System.Web.Security.Roles.GetRolesForUser().Single();
并更改视图:

<div class="editor-field">
   @Html.TextBoxFor(m => m.TipoUtilizador)
</div>

@Html.TextBoxFor(m=>m.TipoUtilizador)

现在调试控制器和查看分配的值会更容易。

加载表单时,角色名称“Student”已经显示在表单上,而不是稍后单击提交按钮时,它不是当前状态吗?单击按钮时,状态变为“TipoUtilizador”加载表单时,角色名称“Student”已经显示在表单上,而不是稍后单击submit按钮时,它不是当前状态吗?单击按钮时,状态变为“TipoUtilizador”,如果在控制器中调试
GetRolesForUser()
方法,则分配的值仍然是“TipoUtilizador”,返回单个角色“TipoUtilizador”,然后可能是用户在角色提供程序中为此类行进行了配置(也可能是此问题未连接到UI或视图)。要检查的一件事是查看RoleProvider和它使用的DB,如果用户真的有这样一行,但这很奇怪,因为它有学生角色,正如您所写的。是的,该用户的角色是学生。在文本框中显示“Student”,但当我在表格中单击create时,该行显示“TipoUtilizador”,您是否也可以添加HTML表单的代码,包括按钮?@MartinStaufcik,应该是
@HTML.TextBoxFor(m=>m.TipoUtilizador)
:)如果
GetRolesForUser()
方法,在控制器中调试时,返回单个角色“TipoUtilizador”,然后可能是用户在角色提供程序中为此类行进行了配置(也可能是此问题未连接到UI或视图)。要检查的一件事是查看RoleProvider和它使用的DB,如果用户真的有这样一行,但这很奇怪,因为它有学生角色,正如您所写的。是的,该用户的角色是学生。文本框中显示“Student”,但当我在表格中单击create时,该行显示“TipoUtilizador”,您是否也可以添加HTML表单的代码,包括按钮?@MartinStaufcik,应该是
@HTML.TextBoxFor(m=>m.TipoUtilizador)
:)