Pergunta

Como todos nós RenderAction() saber ou é parte de:

  • Asp.net MVC 1 Futures ou
  • Asp.net MVC 2 Beta 2

e permite-nos prestar resultado de ação dentro de outra visão ou visão parcial.

Descrição

  1. Você tem uma visão com múltiplas visões parciais exibido usando RenderAction() ajudante.
  2. Pelo menos duas visões parciais tornar uma <form> provavelmente usando Html.BeginForm() que postback para exibição original.
  3. Postback não é realizada através de chamada Ajax
  4. dados
  5. Postback é validada mediante formulário POST.

Problema

Quando uma das formas é postado de volta o outro processa como inválido .

Alguém já usou esse padrão e resolveu isso? Devemos de alguma forma saber qual form realizada postback e só que se deve validar seus dados POST. Outros devem ignorar validação ou executar o processamento de ação HttpVerb.Get regular.

Foi útil?

Solução

Tenha um campo oculto no formulário para indicar qual. Ou, tem um prefixo passado para a parcial e anexado a cada elemento na forma.

Sobre prefixos. Primeira maneira é ter duas propriedades, chamando Html.RenderPartial ( "parcial", Model.Data1 / 2.WithPrefix ( "data1")).

public class FormModel
{
   public string Prefix { get; set; }
}

public class FormData
{
   public FormModel Data1 { get; set; }
   public FormModel Data2 { get; set; }
}

public ActionResult HandlePost(FormData data)
{
   if (data.Data1 != null) {} else {}
}

A segunda maneira é o mesmo, mas o uso de dois parâmetros de ação.

public ActionResult HandlePost(FormModel data1, FormModel data2)
{
   if (data1 != null) {} else {}
}

Na vista parcial fizer

<%= Html.TextBox(Model.Prefix + ".FormModelField", Model.FormModelField) %>

ou seja, você conjunto nome de campo com o prefixo passou no modelo.

Claro que você pode variar isso em detalhes.

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