Pergunta

Eu tenho uma visão em que uso uma convenção de nomenclatura nos meus campos de texto, para indicar o que deve ser feito com o conteúdo depois que ele for postado de volta no meu controlador.

O formato é semelhante a:

<input type="text" name="RegistrationLine#ID" />Para atualizações

<input type="text" name="CreateRegistrationLine#LineNumber" /> para criar

Agora, como estou usando essa concessão de nomeação, a ligação regular não é possível. Mas eu tenho lido um pouco sobre o assunto e encontrei um pouco de indicação de que seria possível escrever um fichário de modelo personalizado, o que deve ajudar a analisar e vincular esses elementos e instanciar os objetos corretamente.

Por favor leia: Vincular o formulário à propriedade de nome diferente, ASP.NET MVC

Isso é um pouco semelhante ao que estou fazendo, exceto, tenho a complexidade adicional de ter informações anexadas no nome do formulário que estou tentando vincular.

Estou muito fora da base aqui? E se não, algum de vocês pode soltar algumas linhas de código para mostrar como você iniciaria esse modelador.

Se essa é uma abordagem muito ruim para o que estou realmente tentando alcançar, adoraria ouvir sugestões para melhores abordagens. Basta observar que o que eu quero poder fazer é postar de volta as duas atualizações e criações de uma só vez.

Foi útil?

Solução

Eu meio que tenho que concordar com @jfar e @omar. Eu não acho que um fichário de modelo personalizado seja onde você deseja estar nesse caso.

Você pode passar um tipo complexo para sua visualização e simplesmente usar a parada completa como @jfar mencionado.

id="Model.Person.Name.FirstName" Felizmente se vinculará a um objeto chamado pessoa que tem uma classe chamada nome que possui uma propriedade chamada FirstName.

Agora, se você deseja fazer algumas verificações especiais nos dados, poderá implementar uma classe parcial que faria as validações etc. e preencher os erros do ModelState.

public partial class Name
{
  public void Validate(){ }
  public int CreateRegistrationLine(){ }
  public bool DoSpecialActions(){ }
}

Não está claro o que suas ações especiais estão fazendo, então meu exemplo acima pode não ser o que você deseja.

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