Pergunta

Eu me pergunto, existe um equivalente aos componentes de visualização monotrilho para o ASP.NET MVC?

O que estou tentando fazer é render alguma interface do usuário complexa que depende de uma aula, então diga que estamos em uma visão da lista, quero passar um objeto para esse equivalente ao ViewComponent e que ele tomará o objeto como um parâmetro e renderiza o complexo Ui para mim, permitindo -me fazer outras coisas na vista. Qual seria a melhor maneira de fazer isso no ASP.NET MVC?

Como essa é uma interface do usuário complexa, eu preferiria escrever uma vez, portanto, os modelos não são realmente do jeito que eu gostaria de ir, pois isso significará que terá problemas de manutenção.
Algumas opções que vi (e estou prestes a começar a tentar) são:

  • Html.renderaction no futuro
  • Subcontrolador

No entanto, eu gostaria de saber se há mais alguma coisa ou se um é melhor que o outro para este cenário em particular

Foi útil?

Solução

Você pode usar

<% Html.RenderAction<ProductController>(c => c.RenderProductResults()); %>

Veja isso página

Outras dicas

Que tal renderparcial? Isso parece se encaixar na conta.

<% Html.RenderPartial("MyPartialView", Model.Data); %>

Por favor, dê uma olhada no DisplayTemplates, bem como no EditorTemplates na visualização do MVC 2.

Ou talvez você queira Ajudantes modificados?

MVCContrib InputBuilder tem algo semelhante.

Embora você possa apenas escrever o seu próprio:

public static string RenderInput(this HtmlHelper html, object data, string prefix)
{
   foreach (var prop in data.GetType().GetProperties())
   {
      object val = prop.GetValue(data, new object[0]);
      string name = prefix + prop.Name;
      switch (prop.PropertyType.Name)
      {
          case "String": html.TextBox(name, val); break;
          case "Guid": html.Hidden(name, val); break;
          default: html.RenderInput(val, name + "."); break;
      }
   }
}

AVISO Recursão. É claro que você precisará adicionar suporte de coleções, etc ... interruptor interno (PropertyType) ... mas isso não é tão difícil. Você também pode verificar a UIHINT na propriedade para renderizar parciais. Muitas possibilidades e tudo sob seu controle ;-)

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