Pergunta

Não suporta NancyFX ASP.NET MVC como "Pegar Todos" rota?Eu preciso de um, que basicamente corresponde a cada URL.Isto é muito útil para a construção de uma Única Página de aplicativos.

Isso é possível?

Foi útil?

Solução

Sim, usando Regex

Get[@"/(.*)"] = parameters => {
    return View["viewname", parameters];
};

Mas você realmente não precisa dele para a construção de uma Aplicação de Página Única com NancyFX - você pode apenas usar Get e Post, com todos os seus lógica de roteamento e ainda ter uma única página de aplicativo.

Outras dicas

Tested in Nancy version 0.23.2

Get[@"/(.*)"] não funciona para mim como um "pega-tudo" rota.Rotas "/", "/foo/bar", e mais rotas não iria pegar.Parece que não há nenhuma obtenção em torno ter que definir um Get["/"] encaminhar para a URL raiz.Nada mais parece pegá-lo (fechar Get["{uri*}"]).Aqui está como eu acabei de definir a minha rotas (lembre-se que eu estou fazendo isso para um ângulo de aplicação):

Get["/views/{uri*}"] = _ => { return "A partial view..."; };
Get["/"] =
Get["/{uri*}"] = _ =>
{
    var uri = (string)_.uri;// The captured route
    // If you're using OWIN, you can also get a reference to the captured route with:
    var environment = this.Context.GetOwinEnvironment();// GetOwinEnvironment is in the 'Nancy.Owin' namespace
    var requestPath = (string)environment["owin.RequestPath"];
    return View["views/defaultLayout.html"];
};

É importante entender Padrão De Pontuação.A rota padrões são ponderados, se duas rotas coincidir com o mesmo segmento de url, a maior pontuação ganha.O catch-all padrão é ponderado 0 e mesmo que o /views/{uri*} rota padrão é também um "pega-tudo", ele começa com um literal, o que é ponderado 10000, então ele vai ganhar em todas as rotas que começam com /modos de exibição.

Veja mais informações em Acessando Owin Variáveis de Ambiente do.Observe que o capturado uri variável e requestPath vai ser um pouco diferente.O requestPath vai começar com um / onde, como o uri variável não.Além disso, se a correspondência rota padrão é Get["/"], uri vai ser null e requestPath vai ser "/".

O Pontos de vista rota de retorno parcial de um ficheiro html, baseado no caminho de url, e todas as outras rotas de retorno padrão de Layout de página, que será a inicialização do SPA.

Uma resposta atualizado para quem @synhershko 's solução não funciona.Tente:

Get[@"^(.*)$"] = parameters => {
    return "hi";
};

Isso irá capturar todos os caminhos, exceto para a página de índice.Eu não tenho certeza se isso vai funcionar no contexto do Angulares, mas isso funcionou para mim quando tentar hack juntos um simples servidor com apenas um processador.

Resposta dada por @synhershko não funciona para mim.Ele não manipula /users/2 ou qualquer outro caminho que contém mais segmentos.

Abaixo o código funciona na minha máquina) :

public class IndexModule : NancyModule
{
    dynamic IndexPage() { return View["Index"]; }

    public IndexModule()
    {
        Get["/"] = _ => { return IndexPage(); };
        Get["/(.*)"] = _ => { return IndexPage(); };
        Get["/(.*)/(.*)"] = _ => { return IndexPage(); };
        Get["/(.*)/(.*)/(.*)"] = _ => { return IndexPage(); };
    }
}

A minha solução não é perfeita, fazer com que ele não corresponde tudo.Eu repetia como muitas '/(.*)' como foi o meu maior Angular de rota.

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