#c# #asp.net-mvc #asp.net-mvc-5
#c# #asp.net-mvc #asp.net-mvc-5
Вопрос:
У меня есть действие, которое принимает список элементов модели и удаляет их, мой вопрос в том, почему параметры не передаются
public ActionResult DeleteMultiple(IEnumerable<QAModel> model)
{
_qaService.DeleteMultiple(model);
long subscriptionId = model.First().SubscriptionId; //value is available here
long languageId = model.First().LanguageId; //value is available here
return RedirectToAction("Index", new { SubscriptionId =subscriptionId, LanguageId =languageId,Message="Data deleted successfully ."});
}
//перенаправление происходит, но значение становится нулевым внутри индексного метода.
public ActionResult Index(int? SubscriptionId,int? LanguageId,string Message)
{
}
что я делаю не так, может кто-нибудь, пожалуйста, помочь мне в этом вопросе.
Комментарии:
1. Перенаправление на индексацию только с
DeleteMultiple
? вы уверены , что не перенаправляетесь на Index откуда — то еще?2. Тип параметра — System.Int32 в методе Index(), но вы передаете System.Int64?
3. @DimitarDimitrov , нет, существует более одного метода, который перенаправляет на индекс действия
4. @StephenMuecke я тоже пробовал с System.Int32, но пока не получаю значения внутри индекса
5. Когда вы выполняете отладку и ваша точка останова достигнута, вы уверены, что она была достигнута с помощью
DeleteMultiple
или каким-либо другим методом?
Ответ №1:
RedirectToAction возвращает браузеру значение 302, которое вызывает другой запрос GET от браузера, поэтому ваши данные не сохраняются.
Если вы хотите вызвать другой метод, просто вызовите этот метод и избегайте обратного перехода к браузеру.
return Index(...)
Комментарии:
1. спасибо, но я тоже пробовал это, но когда я делаю return Index(…), метод Index вызывается два раза, сначала с параметрами, а во второй раз без параметров
Ответ №2:
Попробуйте использовать словарь значений маршрута RouteValueDictionary в методе RedirectToAction()
C # КОД
public ActionResult DeleteMultiple(IEnumerable<QAModel> model)
{
_qaService.DeleteMultiple(model);
long subscriptionId = model.First().SubscriptionId; //value is available here
long languageId = model.First().LanguageId; //value is available here
return RedirectToAction("Index",new RouteValueDictionary {{"SubscriptionId",subscriptionId},{"LanguageId",languageId},{"Message","Data deleted successfully ."}, } );
}
Надеюсь, это может вам помочь, хорошего дня.