ASP.NET MVC 3 ID del modelo utilizando el valor de ID de ruta

Guió
Route: / template / personalizar / 10 Donde: 10 = ID de la plantilla ()

En el controlador, el modelo se crea en función de la plantilla, de modo que el modelo de la Vista es en realidad un objeto Customization () que en realidad tiene un Id de 0 porque es nuevo.

En la vista renderizo @ Html.HiddenFor (m => m.Id) y el valor resultante de esa entrada oculta es 10, aunque debería ser0 porque m es de tipo Personalización. Me he encontrado con esto antes con MVC 2 y lo solucioné al no usar métodos auxiliares.

Preguntas

¿Hay alguna anotación o algo que pueda agregar al método Html Helper para representar realmente el valor correcto?

¿Es esto un error (MVC parece estar representando m.Id como el valor de la ruta, independientemente de lo que el modelo real esté configurado en el controlador)?

Código adicional para aclaraciones

Ve

@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 ) );
    }

Solució

Firma de acción modificada para:

public ActionResult Customize( int TemplateId ){ ... }

Enlace modificado a la acción como tal:

@Html.ActionLink( "customize", "customize", new { TemplateId = template.Id } )

Termino con una URL que se parece a

/template/customize?TemplateId=10

Es más feo, pero puedo mantener mi vista limpia con el modelo. Por lo tanto, esta es una victoria para mí.

Respuestas a la pregunta(3)

Su respuesta a la pregunta