2010-09-04 2 views
0

Пожалуйста, найдите ниже моей Индекс ActionResult:Index ActionResult возвращает 404

public ActionResult Index(string SectionText) 
{ 

    var products = from p in db.Products 
        where p.CategoryID == SectionText 
        //orderby gs.SortBy 
        select p; 

    return View(products.ToList()); 
} 

Это бросает ошибку ниже: -

Ошибка сервера в приложении '/'.

Ресурс не найден.

Описание: HTTP 404. Ресурс вы ищете (или один из его зависимостей ) могли быть удалены, было изменено его имя или временно недоступна. Пожалуйста, просмотрите следующий URL-адрес и убедитесь, что правильно написано.

Запрошенный URL: /Разделы/дочерние платы-894/

Все идеи были бы оценены. это использует встроенный vs веб-сервер.

Благодаря

ответ

0

Ну вы запрашиваете /Sections/daughterboards-894 и нет ничего, что бы связать этот адрес с Index действия. Если вы используете маршрут по умолчанию ваш запрос должен выглядеть следующим образом: /sections/index/daughterboards-894

Конечно, это предполагает, что у вас есть маршрут, способный обрабатывать этот URL:

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{SectionText}", 
    new { 
     controller = "Home", 
     action = "Index", 
     SectionText = UrlParameter.Optional 
    } 
); 

Если вы хотите иметь URL, как /Sections/daughterboards-894/ вам нужно будет установить специальный маршрут для него:

routes.MapRoute(
    "MySpecialUrl", 
    "Sections/{SectionText}", 
    new { 
     controller = "Sections", 
     action = "Index", 
     SectionText = UrlParameter.Optional 
    } 
); 

Примечание: в качестве примечания, я бы порекомендовал вам абстрагирование вашего доступа к данным в хранилище, а не непосредственно к нему доступ в контроллерах. Это упростит ваш код для модульного тестирования.

+0

Спасибо, я добавил маршрут, но у этого не было желаемого эффекта, и я все равно получаю ту же ошибку. – ashga

+0

Просто обновите эту ссылку здесь, но если я удалю индекс, это не сделает. однако Index является специфицированным как опция по умолчанию http: // localhost: 21063/Разделы/Индекс/Брандмауэры-оборудование-832 - работает http: // localhost: 21063/Разделы/firewalls-hardware-832 - не работает. – ashga

+0

Спасибо, я понял, что новый маршрут работает, но мне нужно было поставить его перед ошибкой школьного мальчика по умолчанию! – ashga

Смежные вопросы