Pergunta

Eu estou usando angular com MVC4.Eu gostaria de chamar um controlador MVC método de javascript usando $http.get().Ele requer um url (obviamente).Eu gostaria que este é um caminho relativo, mas como posso escrever isso?Meu controlador está em Controladores/Api/ExampleController.Eu gostaria que o caminho para resolver mesmo se eu mover o arquivo javascript em outro local, ou seja, eu gostaria que o caminho a ser em relação à raiz da aplicação, como contrário para o arquivo javascript.Eu tentei "~/Controllers/Api/ExampleControllerMethod" e "Controladores/Api/ExampleController/Método.

Foi útil?

Solução 2

Obrigado pelas idéias, mas esse tipo de coisa é o que eu estava procurando:

Configurar o WebApiConfig para adicionar uma rota assim (deve-se tê-lo como padrão):

config.Routes.MapHttpRoute(
            name: "ApiMethods",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

Então agora eu posso ir us $http.get('api/{controller}/{método}')

Outras dicas

O $location o serviço fornece informações de url.Então, você poderia construir algo, para depois fazer o host e porta dinâmica:

var url = $location.host() + '/Controllers/Api/ExampleControllerMethod';

Da documentação:

**url: http://www.example.com/base/path?a=b#h**
$location.protocol() = http
$location.host() = www.example.com
$location.port() = 80
$location.path() = /path
$location.search() = {"a":"b"}
$location.hash() = h

O que funcionou para mim foi fornecer o URL como "/ ControlerName / Ação" (em vez de "ControlerName / Ação")

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top