2014-02-01 4 views
1

Я делаю портфолио. На мой взгляд, портфолио, у меня есть следующий код:Может ли кто-нибудь объяснить, почему эти два ActionResults возвращают разные результаты, несмотря на то, что они одинаковы?

<a href="@Url.Action("Index", "Project", new { _title = @ViewBag.ProjectContainer.Projects[x].Title, _imagePath = @ViewBag.ProjectContainer.Projects[x].ImagePath, _brief = @ViewBag.ProjectContainer.Projects[x].Brief, _description = @ViewBag.ProjectContainer.Projects[x].FullDescription, })" class=" readmore-button button">Learn More</a> 

Он помещен в цикл, который проходит через ViewBag и рисует кнопку для каждого «Проекта» в «Project Container». При щелчке это должно привести к странице проекта и отобразить соответствующую информацию.

Когда написано, как описано выше (вызов метода Index() в контроллере Project) все работает, как предполагалось, и страница отображается таким образом:

http://gyazo.com/57901eab7ccf8be45270312a92880072

Однако, когда я звоню другой метод в мой контроллер, который я назвал "SetProject", происходит следующее:

http://gyazo.com/6a5c6164dc4e8b55ec8a6684ce469652

Мои методы контроллера выглядеть следующим образом:

public ActionResult Index(string _title, string _imagePath, string _brief, string _description) 
{ 
    ProjectViewModel proj = new ProjectViewModel { Title = _title, ImagePath = _imagePath, Brief = _brief, FullDescription = _description }; 
    return View("Project", proj); 
} 

public ActionResult SetProject(string _title, string _imagePath, string _brief, string _description) 
{ 
    ProjectViewModel proj = new ProjectViewModel { Title = _title, ImagePath = _imagePath, Brief = _brief, FullDescription = _description }; 
    return View("Project", proj); 
} 

Возможно, вы заметили, что они идентичны - отсюда мой вопрос, ПОЧЕМУ они выглядят так иначе? Почему вторая просто не работает?

Я довольно новичок в ASP.NET и движке просмотра Razor и стараюсь учиться, но здесь очень застрял. Поблагодарили бы за любую помощь.

Это может быть связано с конфигурацией маршрута? Единственное различие, которое я вижу, это URL-адрес, отличающийся для сломанного (с дополнительным «/ SetProject»)

+0

Похоже, что второй не использует таблицы стилей. Каков путь, что говорит консоль вашего браузера о неудачных запросах? – CodeCaster

+0

Консоль кажется голой, кроме как «Navigation Accepted». URL-адрес метода «SetProject»: «http: // localhost: 10062/Project/SetProject?» за которым следует длинный список параметров. URL-адрес метода «Индекс»: «http: // localhost: 10062/Project?» за которым следует то же самое – user3261018

ответ

1

Почему вторая просто не работает?

Из-за ваших ссылок css.Это работает актуально, это не похоже на то, что вы ожидали. Убедитесь, что вы включили все ссылки css внутри Layout и убедитесь, что ваш проект просмотрен с вашей страницы Layout.

+0

Не могли бы вы еще немного объяснить? Оба метода контроллера возвращают один и тот же вид с той же моделью просмотра, но индекс один отлично рисует. Все мои представления, похоже, используют мой _Layout по умолчанию, как установлено в классе _ViewStart – user3261018

+0

@ user3261018 Я ничего не могу сказать о ваших представлениях, потому что вы не предоставили код View. Если вы уверены, что ваша страница использует ваш макет, попробуйте чтобы добавить ссылки css внутри вашего представления Project вручную и посмотреть, что произойдет –

+0

Существует только один вид, представление «Проект», и оба они возвращают его. Единственное различие заключается в том, что он по какой-то причине корректно отображает метод Index(). Я принял ваш совет и удостоверился, что он использовал правильный макет, я добавил @ { Layout = "~/Views/Shared/_Layout.cshtml"; } К началу страницы, но это не принесло успеха. – user3261018