Как я могу вызвать действие контроллера, передавая фиксированную строку и значение из выпадающего списка? - PullRequest
1 голос
/ 07 декабря 2010

Я уверен, что то, что я хочу сделать, возможно, но я не могу понять, как.

У меня есть представление, которое показывает некоторую информацию о выбранном пользователе, включая его роли. Я добавил выпадающий список, показывающий все роли, и хочу иметь кнопку, которая добавит выбранную роль из выпадающего списка к текущему пользователю. Для этого у меня есть контроллер с этим методом:

public ActionResult AddUserRole (string userName,string roleName)
    {
    if (Roles.IsUserInRole (userName,roleName)==false)
        {
        Roles.AddUserToRole (userName,roleName);
        }
    return RedirectToAction("Profile", "Profile",new {userName=userName});
    }

, но я не могу понять, как установить выбранный элемент в раскрывающемся списке в виде параметра string roleName в методе контроллера Я могу установить userName достаточно легко, так как это статично. Что мне не хватает? Вот мое мнение, или, по крайней мере, соответствующий бит:

<%    
using (Html.BeginForm( "AddUserRole", "Account",new {userName=Model.UserName}))
    {%>
    <div id="AddRoleToUser">
        <asp:Label ID="Label1" runat="server" Text="Select new role."></asp:Label>
    <%:Html.DropDownListFor(model=>model.Roles,new SelectList (Model.Roles),null,new {id="roleName"}) %>
    <input type="submit" value="Create" />
    </div>
<%  }%>

<%}%>

Model.Roles типа IEnumerable<String>;

1 Ответ

0 голосов
/ 07 декабря 2010

похоже, что изменение имени параметра в действии контроллера дало мне то, что я хотел:

public ActionResult AddUserRole (string userName,string roles)
    {
    if (Roles.IsUserInRole (userName,roles)==false)
        {
        Roles.AddUserToRole (userName,roles);
        }
    return RedirectToAction("Profile", "Profile",new {userName=userName});
    }

<%    
using (Html.BeginForm( "AddUserRole", "Account",new {userName=Model.UserName}))
    {%>
    <div id="AddRoleToUser">
        <asp:Label ID="Label1" runat="server" Text="Select new role."></asp:Label>
    <%:Html.DropDownListFor(model=>model.Roles,new SelectList (Model.Roles)) %>
    <input type="submit" value="Create" />
    </div>
<%  }%>

<%}%>

не уверен, как бы я назвал это другим, но сейчас это работает, так что все будет хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...