Путаница в маршрутизации в ASP.NET MVC - PullRequest
0 голосов
/ 30 августа 2011

Контекст: В настоящее время я занимаюсь разработкой своего первого приложения MVC, следуя примерам из книги Стивена Сандерсона "Pro ASP.NET MVC Framework 2". Я следовал первым главам и реализовал приложение, аналогичное полному коду «SportStore», которое можно найти по следующей ссылке http://pastie.org/2451370

Приложение имеет два контроллера

1 .- NavController предназначен для реализации пользовательского меню с использованием пользовательского элемента управления «Menu.ascx»

2 .- PostEntryController предназначен для вывода списка сообщений, относящихся к определенной опции меню

Проблема возникает, когда приложение работает в режиме отладки. Сгенерированные NavController ссылки не работают по какой-то причине, экземпляр PostEntryController не создан.

Когда я проверяю исходный код, генерируемый файл aspx отображается как (PostEntry / Index.aspx)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link href="/MarsWeb/Content/Site.css" rel="stylesheet" type="text/css" />
<link href="/MarsWeb/Content/jquery.treeview.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/MarsWeb/Scripts/jquery-1.4.1.js"></script>
<script type="text/javascript" src="/MarsWeb/Scripts/jquery.treeview.js"></script>
<script type="text/javascript" src="/MarsWeb/Scripts/jquery-treeview-1.4.0.min
</script>
<script type="text/javascript">
$(function() {
$("#browser").treeview({collapsed: true,animated: "medium",control: "#categories",
           unique: true,persist: "location"});})
</script>    
<title>Posts</title></head>
<body>
<div id="header">
<div id="title">
<h1>Mars Ventas</h1>
</div>                        
</div>  
<div id="categories">         
<ul id="browser" class="filetree">
<li><span class="folder"><a href="/PostEntry/Index/0/1">Home</a></span></li>
<li><span class="folder"><a href="/PostEntry/Index/2/1">Ventas</a></span></li>
<li><span class="folder"><a href="/PostEntry/Index/3/1">Avance de Ventas</a></span></li>
<li><span class="folder"><a href="/PostEntry/Index/4/1">Browser</a></span></li>
</ul>
</div>
</html>

Кто-нибудь может мне помочь?

Это Global.asax

routes.MapRoute("PostEntry", "PostEntry/{action}/{MenuItemId}/{page}", // Matches ~/MenuId
            new { controller = "PostEntry", action = "Index", MenuItemId = (string)null },
            new { page = @"\d+" }
        );

        routes.MapRoute("MenuItem", "PostEntry/{action}/{MenuItemId}", // Matches ~/MenuId
            new { controller = "PostEntry", action = "Index", MenuItemId = (string)null, page = 1 }
        );

        routes.MapRoute(null, "", // Only matches the empty URL (i.e. ~/) 
            new { controller = "PostEntry", action = "Index", MenuItemId ="0", page = 1}
        );

Когда я пишу URL в адресной строке, я могу получить доступ к URL

Ответы [ 2 ]

1 голос
/ 03 сентября 2011

Я изменил свой Site.Master и отключил JavaScript, и теперь ссылки работают нормально.В настоящее время я читаю следующую ссылку для решения этой проблемы Относительные пути ASP.NET MVC

1 голос
/ 30 августа 2011

Согласно вашему описанию, я считаю, что генерация ссылок прошла неправильно. Так что посмотрите на источник HTML из браузера и посмотрите, правильно ли сгенерированы ссылки.

...