ASP.NET MVC 3 Контроллер маршрутизации - PullRequest
0 голосов
/ 10 декабря 2011

Так что я немного озадачен тем, как справиться с маршрутизацией MVC

У меня есть AdminController

    public class AdminController : Controller
{
    //
    // GET: /Admin/

    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Users()
    {
        return View();
    }
    public ActionResult Books()
    {
        return View();
    }

}

Который работает нормально. Так что я могу перейти к / Admin / Books

Это админ-меню для управления книгами. Теперь я хотел бы иметь возможность прокладывать маршрут как

/Admin/Books/ViewBook/10
or
/Admin/Books/Add

Нечто подобное. Кажется, я не могу понять, как все это направить. Я сделал контроллер

AdminBookController

   public class AdminBooksController : Controller
{
    //
    // GET: /AdminBooks/
    public ActionResult List()
    {
        return View();
    }

    public ActionResult Add()
    {
        return View();
    }
    [HttpGet]
    public ViewResult BookDetails(Guid guid)
    {
        return View();
    }
    [HttpPost]
    public ViewResult BookDetails(ModifyBook Book)
    {
        if (ModelState.IsValid)
            return View("Book successfully Edited!");
        else
            return View();
    }
}

}

но я не хочу, чтобы это было / AdminBooks Мне кажется / Admin / Books / Action / Param намного приятнее.

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 10 декабря 2011

Если вы хотите, чтобы эти URL отображались на вашем контроллере AdminBooks, вам необходимо отобразить следующие маршруты (в следующем порядке):

// maps /Admin/Books/ViewBook/{id} to AdminBooksController.BookDetails(id)
routes.MapRoute(
    "AdminBooks_ViewBook", // Route name
    "Admin/Books/ViewBook/{id}", // URL with parameters
    new { controller = "AdminBooks", action = "BookDetails", id = UrlParameter.Optional } // Parameter defaults
);

// maps /Admin/Books/{action}/{id} to AdminBooksController.{Action}(id)
routes.MapRoute(
    "AdminBooks_Default", // Route name
    "Admin/Books/{action}/{id}", // URL with parameters
    new { controller = "AdminBooks", action = "List", id = UrlParameter.Optional } // Parameter defaults
);

Примечание. Обязательно установите эти сопоставления до значения по умолчаниюМаршрут MVC.

1 голос
/ 10 декабря 2011

Рассмотрите возможность создания Административной области и добавления BookController в эту область.Смотрите следующую ссылку для прохождения:

http://msdn.microsoft.com/en-us/library/ee671793.aspx

0 голосов
/ 10 декабря 2011

Вы можете добавить новый маршрут в ваш файл Global.asax.

Смотрите этот вопрос:

Использовать маршрутизацию MVC для псевдонима контроллера

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