2016-08-13 4 views
0

У меня есть выход из системы buttton, которые показывают мне это сообщение, когда я пытаюсь нажать выход из системы на моем приложении здесь сообщение, которое я получаюкнопка Logoff не работает

Словаря параметров содержит пустую запись для параметра 'id' из non-nullable тип 'System.Int32' для метода 'System.Web.Mvc.ActionResult LogOff (Int32)' в 'Web_Site_Portal.Controllers.AccountController'. Необязательный параметр должен быть ссылочным типом, нулевым типом или быть объявлен как необязательный параметр . Имя параметра: Параметры

вот мой код

<a class="btn btn-primary btn-raised" @Html.ActionLink("Logout", "LogOff", "Account", routeValues: null, htmlAttributes: new { id = "logOff" })<div class="ripple-container"></div></a> 

Контроллер

// POST: /Account/LogOff 
     [HttpPost] 
     [ValidateAntiForgeryToken] 
     public ActionResult LogOff() 
     { 
      AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); 
      return RedirectToAction("Index", "Home"); 
     } 

     // 
     // POST: /Account/LogOff 
     [HttpGet] 
     public ActionResult LogOff(int id) 
     { 
      AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); 
      return RedirectToAction("Index", "Home"); 
     } 
+0

Как и в случае ошибки, для метода 'LogOff()' требуется параметр 'int'. Вы не предоставляете его. Какой параметр вам необходимо предоставить? – David

ответ

4

У вас есть int в вашем параметра Я LogOff действие, которое, кажется, не так. Вам не нужен этот параметр, потому что вы выходите из текущего текущего пользователя. Я вижу, что ваша ссылка LogOff имеет параметр id route witch - это строка. Почему это? Если вам это нужно, вы должны изменить тип параметра LogOff action на строку.

Редактировать

У вас есть два действия, которые делают то же самое. Если вы хотите, чтобы ваше действие LogOff работало как с методами GET, так и с POST, затем удалите [HttpGet] и [HttpPost] из действий. Все что вам нужно:

public ActionResult LogOff() 
{ 
    AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); 
      return RedirectToAction("Index", "Home"); 
} 
+0

Я сделал это, и теперь я получаю это сообщение «Необходимое поле формы для подделки« __RequestVerificationToken »нет». –

+0

У вас есть атрибут '[ValidateAntiForgeryToken]' перед вашим действием. Вы также должны добавить '@ Html.AntiForgeryToken()' в своей форме. – Mahmoodvcs

Смежные вопросы