gcogco10 Ответов: 1

Встреча серверного приложения/ошибка 404?


Привет Команда

Что может быть причиной того, что моя маршрутизация не работает? Я настроил это на своей странице Routing.cs. Пожалуйста, мне нужна некоторая помощь в этой проблеме.

Что я уже пробовал:

// Route to CoursesRegistered
         routes.MapRoute(
             name:"CoursesRegistration",
             url:"courses-enrolled-for/",
             defaults: new {controller="Home", action = "CoursesRegistration", url = UrlParameter.Optional}

          );


[HttpPost]
 public ActionResult CoursesRegistration( eNtsaRegCourses model)
   {
       if(ModelState.IsValid)
       {
           try
           {
               cb.SaveChanges();
               return Json(new { success = true });
           }catch(Exception ex)
           {
               ModelState.AddModelError("", ex.Message);
           }
       }

       return PartialView("CoursesRegistration", model);
   }


   // saving changes here.
   static void SaveChanges(eNtsaCourses model)
   {

   }

1 Ответов

Рейтинг:
0

F-ES Sitecore

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

routes.MapRoute(
    name: "CoursesRegistration",
    url: "courses-enrolled-for/",
    defaults: new { controller = "Home", action = "CoursesRegistration", url = UrlParameter.Optional }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);


Если маршрут по умолчанию является первым, то он будет принимать "courses-enrolled-for" в качестве имени контроллера, поскольку url-адрес соответствует шаблону по умолчанию.


gcogco10

@F-ES Sitecore, мое приложение использует AspNetIdentity, поэтому ниже приведена моя конфигурация из routing; // Route to CoursesRegistered
маршруты.MapRoute(
название: "CoursesRegistration",
url: "курсы-зачислены-для/",
по умолчанию: новый { контроллера = "Главная", действие = "CoursesRegistration", URL-адрес = UrlParameter.Необязательный }

);

// Маршрут на главную страницу.
маршруты.MapRoute(
имя default",
url: "{controller}/{action}/{id}",
по умолчанию: new { controller = "Account", action = "Index", id = UrlParameter.Необязательный }
); // Это используется, когда используется регистрация/логин на сайте надеюсь, вы получите представление

F-ES Sitecore

Ну, эта конфигурация работает для меня, каков url-адрес, когда вы получаете 404?

F-ES Sitecore

Читая между строк, отправляете ли вы форму, требующую аутентификации, чтобы вас направили в форму входа, а затем обратно к вашему действию? Если это так, то это ваша проблема, так как ваше действие-HttpPost, а перенаправление-HttpGet. Когда вы перенаправляетесь на свой url-адрес после входа в систему, он не сохраняет исходные данные формы, поэтому вам понадобится httpget-версия действия, которое перенаправляет на исходную форму. Однако пользователь потеряет свои данные, поэтому убедитесь, что человек вошел в систему, когда он получает доступ к форме, а не после того, как он ее отправил.

gcogco10

Другими словами, [HttpGet] public ActionResult (....) {}?

gcogco10

Я пробовал его работу, проблема, которую я получаю сейчас, не сохраняется в моей таблице из базы данных

F-ES Sitecore

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

gcogco10

@F-ES сайт я делаю, https://www.codeproject.com/Questions/5277146/Asp-net-MVC-bootstrap-modal-is-not-saving-to-the-d

F-ES Sitecore

Если HttpGet работает, а HttpPost дает вам 404, который предполагает, что ваша форма не выполняет post для этого действия, где-то по пути она делает get вместо этого. Посмотрите на мой ответ на ваш новый вопрос, чтобы понять, почему.