¿Cómo es que ASP.NET llena el atributo de clave externa automáticamente en este caso?

Esto me atrapó cuando comencé con MVC también.

Para obtener y publicar, siempre desea pasar un ViewModel de algún tipo. Incluso si es un objeto en blanco sin valores.

Según su ejemplo, vería un objeto Transacción pasado a la Vista así:

Depósito público de resultados de acción (int CheckAccountId)
{
// en una creación.
transacción var = nueva transacción ();
// Si desea realizar una edición, complete el objeto de transacción aquí.
// transacción var = CallYourDataLayer.LoadTransaction (CheckAccountId);
Vista de retorno (transacción);
}

Ese es tu GET. Con respecto a su POST, debería estar bien.

Como no está haciendo ningún ModelBinding manual, debería estar bien.

Detrás de escena, las carpetas de modelos son las que “pegan” sus datos de formulario o cualquier cosa relacionada con HttpContext a sus objetos y los pasa a su controlador.

Espero que esto ayude.

Material de referencia:
– Modelo ASP.NET MVC: cree un modelo BaseView para sus diseños
– Vistas MVC de ASP.NET: paso de datos a vistas
– ASP.NET MVC ModelBinder: Use ModelBinders para QueryStrings