Como posso ter uma exibição renderizada parcial (controle de usuário) de uma pasta diferente? Na pré-visualização 3, eu costumava chamar RenderUserControl com o caminho completo, mas com a atualização para a pré-visualização 5, isso não é mais possível. Em vez disso, obtivemos o método RenderPartial, mas ele não está me oferecendo a funcionalidade que estou procurando.
c#
asp.net-mvc
renderpartial
Boris Callens
fonte
fonte
FindPartialView
método com algo comoif(partialViewName.Contains"/")partialViewName="~/Views/"+partialViewName;
No meu caso, eu estava usando o MvcMailer (https://github.com/smsohan/MvcMailer) e queria acessar uma exibição parcial de outra pasta que não estivesse em "Compartilhado". As soluções acima não funcionaram, mas o uso de um caminho relativo funcionou.
fonte
Se você estiver usando esse outro caminho muitas vezes, poderá corrigi-lo permanentemente sem precisar especificar o caminho o tempo todo. Por padrão, está verificando vistas parciais na pasta Exibir e na pasta Compartilhada. Mas diga que você deseja adicionar um.
Adicione uma classe à sua pasta Modelos:
Em seguida, no seu arquivo Global.asax.cs, adicione a seguinte linha:
fonte
Para um controle de usuário chamado myPartial.ascx localizado na pasta Views / Account, escreva assim:
fonte
Eu criei uma solução alternativa que parece estar funcionando muito bem. Eu encontrei a necessidade de mudar para o contexto de um controlador diferente para pesquisar nomes de ações, visualizar pesquisas etc. Para implementar isso, criei um novo método de extensão para
HtmlHelper
:ControllerContextRegion
é definido como:A maneira como isso é usado em uma visualização é a seguinte:
Pode haver efeitos colaterais indesejados para isso, se o seu código exigir que o
controller
componente de rota não seja alterado, mas em nosso código até agora, não parece haver nenhum negativo nessa abordagem.fonte
O VirtualPathProviderViewEngine, no qual o WebFormsViewEngine se baseia, deve suportar os caracteres "~" e "/" na frente do caminho, para que seus exemplos acima funcionem.
Notei que seus exemplos usam o caminho "~ / Account / myPartial.ascx", mas você mencionou que seu controle de usuário está na pasta Views / Account. Você tentou
ou isso é apenas um erro de digitação na sua pergunta?
fonte
Para leitores que usam o ASP.NET Core 2.1 ou posterior e desejam usar a sintaxe do Assistente Parcial de Tags , tente o seguinte:
O til (~) é opcional.
As informações em https://docs.microsoft.com/en-us/aspnet/core/mvc/views/partial?view=aspnetcore-3.1#partial-tag-helper também são úteis.
fonte
você deveria tentar isso
coloque o
~/Views/
antes do seu códigofonte
Crie um Mecanismo de Visualização Personalizado e tenha um método que retorne um ViewEngineResult Neste exemplo, você apenas sobrescreve o
_options.ViewLocationFormats
diretório da pasta e adiciona-o:Exemplo: https://github.com/AspNetMonsters/pugzor
fonte
Tente usar
RenderAction("myPartial","Account");
fonte