ID do modelo do ASP.NET MVC 3 usando o valor do ID da rota
Cenári
Route: / template / customize / 10 Onde: 10 = ID do Template ()
No controlador, o modelo é criado com base no modelo, de modo que o modelo do View é na verdade um objeto Customization () que realmente possui um ID de 0 porque é novo.
Na exibição, eu renderizo @ Html.HiddenFor (m => m.Id) e o valor resultante dessa entrada oculta é 10, embora deva ser0 porque m é do tipo Personalização. Eu já deparei com isso antes com o MVC 2 e resolvi isso usando os métodos auxiliare
Questõe
Existe uma anotação ou algo que eu possa adicionar ao método Html Helper para renderizar o valor corret
sso é um bug (o MVC parece renderizar m.Id como o valor da rota, independentemente do modelo definido no controlador
ódigo adicional para esclarecimen
Visã
@model Project.Core.Domain.Customization
@using( Html.BeginForm( "save", "customization" ) )
{
@Html.HiddenFor( m => m.Id )
@Html.HiddenFor( m => m.Template.Id )
<button type="submit" id="save" name="save">Save</button>
}
Controlado
public ActionResult Customize( int id )
{
var template = Persistence.Data.RetrieveObject<Template>( id );
var model = new Customization();
ViewBag.Template = template;
return ( View( model ) );
}
Soluçã
Assinatura alterada da ação para:
public ActionResult Customize( int TemplateId ){ ... }
Link alterado para ação como tal:
@Html.ActionLink( "customize", "customize", new { TemplateId = template.Id } )
Acabo com um URL que se parece com
/template/customize?TemplateId=10
É mais feio, mas eu mantenho minha visão limpa com o model.Id, então isso é uma vitória para mi