Я хочу обновить базу данных сразу из сетки, которая включает в себя флажки - PullRequest
1 голос
/ 06 августа 2010

Я новичок в MVC, и мне интересно, как сделать следующее; Используя цикл foreach и пользовательский элемент управления, я с удовольствием отображаю список пользователей из базы данных. Эта страница является страницей администратора, и отображаются соответствующие разрешения для каждого пользователя. Я хочу изменить это так, чтобы под каждым заголовком для каждой роли был установлен флажок, который определяет, будет ли эта роль назначена этому человеку. Когда администратор нажимает на флажок, роль для этого пользователя изменяется соответственно. В идеале обновление должно происходить сразу в базе данных.

Каков наилучший способ сделать это в MVC2?

1 Ответ

2 голосов
/ 08 августа 2010

Если вы хотите, чтобы значения изменялись и запускались переключателем флажка, примите во внимание эти предложения.

Используйте jQuery, чтобы прикрепить событие для каждого из ваших флажков.Сделайте, чтобы это сделало AJAX-вызов к URL в вашем контроллере.Это событие будет срабатывать при каждом переключении и запускать следующий код:

$.ajax({
//this could also be built with '<%= Url.Action("UpdateUserRole","User") %>/
url: "/User/UpdateUserRole", 
type: "POST",
data: {
       "userID" :  "", //somehow place the user's ID here - cookie, session, etc.
       "roleID" : $('#theCheckbox').val(),
      },
success: function(data) { alert(data); }
});

Создайте этот новый метод действия контроллера.Возможно, это выглядит так:

public string UpdateUserRole(int userID, int roleID){
    //go update the DB with the 2 params as needed.
}

Внутри вы можете вызвать свою базу данных, чтобы удалить / добавить роль пользователю, в зависимости от того, существует ли она в настоящее время.Вам решать, хотите ли вы, чтобы логическое значение указывало на включение / отключение, но это усложнит ваш вид.Мое предложение сделало бы действие простым «изменением» состояния в базе данных.Если существует пара пользователь / роль, удалите его.Если это не так, создайте его.

Обеспечьте безопасность этого метода контроллера.Возможно, вы не захотите, чтобы кто-нибудь обнаружил, как работает схема.Возможно, включите в свою форму Html.AntiForgeryToken и укажите это в методе контроллера.

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