Eu tenho uma página mestra compartilhada que estou usando em 2 áreas diferentes no meu aplicativo mvc 2. A página mestra tem um link de ação que atualmente especifica o controlador e a ação, mas é claro que o link não funcionará se eu estiver na área errada. Não vejo sobrecarga para o actionlink que usa um parâmetro de área, é possível fazer isso?
156
Algo em que encontrei logo após isso, que imagino que outros possam encontrar: Se você precisar vincular de uma área a uma ação que não está em uma área, ainda precisará especificar a Área como uma sequência vazia.
Por exemplo, mudei algum código MVC para uma área e descobri que precisava atualizar os URLs na página mestre que referenciava outras páginas no site.
Para especificar um URL para algo que não está em uma área, use
fonte
Usar:
Nota : O quarto parâmetro é passar a rota
Values
, se você passar um parâmetro vazio, ele considerará a estrutura raiz e se você passar o valor apropriado, use-o como área.Também não se esqueça de usar
null
ounew{}
como o quinto parâmetro, porque passarnull
ounew {}
criar um link de ação não sobrecarregará o método(text,action,controller,route data)
ou,(text,action,controller,route data,html attribute)
portanto, usará o método apropriadofonte
No MVC2 dando
area="root"
funcionou pra mim como abaixofonte
Um bom truque que você pode fazer se estiver usando muito uma área em um View é defini-lo como uma variável na parte superior:
fonte
Aqui está o que eu criei como uma solução para permitir que um usuário se vincule aos sistemas de autenticação pré-criados.
Cada uma das minhas áreas possui uma versão do arquivo _LoginPartial.cshtml.
Provavelmente eu poderia fazer com que o aplicativo usasse uma única versão do arquivo, no entanto, continuava com erros ao tentar usar um único login parcial.
É apenas uma ligeira modificação no componente de login original gerado, mas parece funcionar bem quando usado em áreas específicas.
Aqui está o código que é usado em todos eles:
fonte
htmlAttributes:
funcionou muito bem para o uso de vários parâmetros.Se você não pode usar o link de aplicativo da Web padrão, como Sobre, Casa, Contac etc. da área. Você muda de linha
de
Views \ Shared_Layout.cshtml
fonte
No meu aplicativo ASP Net Core, basta adicionar a área aos atributos html da seguinte forma:
fonte
Usando
Vai conseguir o que você procura.
O DisplayText é o que será exibido (o mesmo que
<a href="#">DisplayText</a>
), o ActionName é o método que está sendo chamado no controlador e ControllerName é obviamente o controlador que você deseja chamar! O próximo parâmetro é 'Valor da rota', onde você adicionaria sua área. Se você está atualmente em uma área e deseja navegar de volta à sua raiz,Home/Index
por exemplo, você deixaria o valor como uma string vazia, por exemplonew { area = ""}
. O valor final é 'Html Attributes' e onde você adicionaria uma classe se desejasse e deveria ser umnull
se não tiver nenhum atributo a ser adicionado. Mas como o último parâmetro é visto como 'Html Attributes'; Para que os valores da rota sejam reconhecidos, isso deve sernull
fonte