У меня есть View Browse.chtml
, в котором пользователь может ввести поисковый запрос или оставить поле поиска пустым. При вводе поискового запроса я хочу направить страницу на, http://localhost:62019/Gallery/Browse/{Searchterm}
а когда ничего не введено, я хочу направить браузер на http://localhost:62019/Gallery/Browse/Start/Here
.
Когда я пытаюсь это сделать, я получаю сообщение об ошибке:
Текущий запрос действия «Обзор» для типа контроллера «GalleryController» неоднозначен для следующих методов действия: System.Web.Mvc.ActionResult Browse (System.String) для типа AutoApp_MVC.Controllers.GalleryController System.Web.Mvc.ActionResult Browse (Int32, System.String) для типа AutoApp_MVC.Controllers.GalleryController
Все, что я делаю с MVC, - впервые. Я не уверен, что еще попробовать на данном этапе.
public ActionResult Browse(string id)
{
var summaries = /* search using id as search term */
return View(summaries);
}
public ActionResult Browse(string name1, string name2)
{
var summaries = /* default list when nothing entered */
return View(summaries);
}
У меня также есть это в Global.asax.cs:
routes.MapRoute(
"StartBrowse",
"Gallery/Browse/{s1}/{s2}",
new
{
controller = "Gallery",
action = "Browse",
s1 = UrlParameter.Optional,
s2 = UrlParameter.Optional
});
routes.MapRoute(
"ActualBrowse",
"Gallery/Browse/{searchterm}",
new
{
controller = "Gallery",
action = "Browse",
searchterm=UrlParameter.Optional
});
источник
return View("Browse", summaries);
Я не знаю, когда был задан вопрос, это решение было доступно, но вы можете использовать:
Итак, это должно работать нормально для вашей проблемы:
источник
Добавьте следующий код в RouteConfig.cs перед маршрутом по умолчанию
И добавьте атрибуты маршрута в контроллер, например:
источник
Я думаю, что здесь говорится о том, что вам не нужно неявно тестировать параметры строки запроса с помощью класса запроса.
MVC выполняет сопоставление за вас (если вы не внесли серьезных изменений в свои маршруты MVC).
Таким образом, путь ссылки действия
будет автоматически доступен для вашего (поверхностного) контроллера с определенным параметром:
MVC делает свою работу.
источник