Вопрос:

MVC Routing для вызова одного представления из другого

asp.net-mvc routing

652 просмотра

1 ответ

0 Репутация автора

Как уже объяснялось в моих предыдущих постах, я новичок в MVC и занимаюсь разработкой веб-сайта. Все работает отлично, за исключением небольшого изменения, которое я сделал в моем файле route.config. Мне нужно направить пользователей к представлению, которое открывается с помощью кнопки в другом представлении и зависит от родительского представления. Это означает, что доступ к нему нельзя разрешать самостоятельно.

Редактирование, чтобы быть более понятным.

Это проблема. клиенты заходят на мой сайт и видят страницу активности своего аккаунта, и однажды они могут выбрать оплату, если у них есть какая-то сумма. Когда они нажимают на кнопку оплаты, они направляются на сайт оплаты, и после того, как они это сделали, они перенаправляются обратно на мой сайт, где они видят страницу подтверждения / просмотр.

Таким образом, URL-адреса как сейчас.

http://www.examplesite.com/Homecontroller/Loginview/ - for login.

После входа в систему URL это

http://www.examplesite.com/Homecontroller/CustActview/

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

http://www.examplesite.com/Homecontroller/CustActview/successfulpaymentview

поэтому, чтобы добиться этого, я добавил этот другой маршрут в мой route.config, но добавление, которое дало мне другую проблему, теперь, если я вхожу в систему, URL меняется на этот

http://www.examplesite.com/Homecontroller/CustActview/CustActview 

Поэтому я не уверен, как справиться с этим. Пожалуйста помоги. Надеюсь, это понятно.

Route.config

routes.MapRoute(
            name: "Properties",
            url: "{controller}/CustAcct/{action}/{id}",
            defaults: new
            {
                controller = "HomeController",
                action = "successfulpaymentview",
                id = UrlParameter.Optional
            }
        ); 
routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new
            {
                controller = "HomeController",
                action = "LoginView",
                id =
                    UrlParameter.Optional
            }
        );
Автор: user6673105 Источник Размещён: 22.08.2016 08:18

Ответы (1)


0 плюса

55 Репутация автора

По моему мнению, нет необходимости добавлять сложность в маршрутизацию только для ограничения прямого доступа к этому представлению.

Может быть, вы должны попробовать использовать фильтры действий .

Помимо этого комментария, в вашей конфигурации маршрута вы определили два действия ...

url: "{controller} / CustAcct / {action} / {id}",

  • CustAcct и {действие}

Попробуйте что-то вроде этого:

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

Обновить:

Хорошо, я понял! Вы RouteConfig.cs должны быть:

public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "AccounInfo-Success",
                url: "{controller}/AccounInfo/{action}/"
            );

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

и ваш HomeController:

 public class HomeController : Controller {
        public ActionResult AccountInfo() {
            return View();
        }

        public ActionResult Success() {
            return View();
        }
    }
Автор: Seba Размещён: 22.08.2016 08:49
Вопросы из категории :
32x32