Tenho uma View chamada Browse.chtml
, onde o usuário pode inserir um termo de pesquisa ou deixar o termo de pesquisa em branco. Ao inserir o termo de pesquisa, desejo direcionar a página para http://localhost:62019/Gallery/Browse/{Searchterm}
e quando nada for inserido, desejo direcionar o navegador para http://localhost:62019/Gallery/Browse/Start/Here
.
Quando tento fazer isso, obtenho o erro:
A solicitação atual de ação 'Browse' no tipo de controlador 'GalleryController' é ambígua entre os seguintes métodos de ação: System.Web.Mvc.ActionResult Browse (System.String) no tipo AutoApp_MVC.Controllers.GalleryController System.Web.Mvc.ActionResult Browse (Int32, System.String) no tipo AutoApp_MVC.Controllers.GalleryController
Tudo que estou fazendo com MVC é pela primeira vez. Não tenho certeza do que mais tentar neste momento.
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);
}
Eu também tenho isso em 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
});
fonte
return View("Browse", summaries);
Não sei quando a pergunta foi feita, esta solução estava disponível, mas você pode usar:
Portanto, isso deve funcionar bem para o seu problema:
fonte
Adicione o seguinte código em RouteConfig.cs antes da rota padrão
E adicione atributos de rota no controlador como:
fonte
Acho que o que está sendo dito é que você não precisa testar implicitamente os parâmetros da string de consulta usando a classe de solicitação.
MVC faz o mapeamento para você (a menos que você tenha feito mudanças severas em suas rotas MVC).
Assim, um caminho de link de ação de
estaria automaticamente disponível para seu controlador (de superfície) com o parâmetro definido:
MVC faz o trabalho.
fonte