Comment se fait-il qu’ASP.NET remplisse automatiquement l’attribut de clé étrangère dans ce cas?

Cela m’a aussi fait mes débuts avec MVC.

Pour votre Get et Post, vous voulez toujours passer dans un ViewModel d’une sorte. Même s’il s’agit d’un objet vide sans valeur.

Sur la base de votre exemple, je verrais un objet Transaction passé dans la vue comme suit:

dépôt ActionResult public (int checksAccountId)
{
// sur une création.
var transaction = new Transaction ();
// Si vous souhaitez effectuer une modification, remplissez l’objet de transaction ici.
// var transaction = CallYourDataLayer.LoadTransaction (checksAccountId);
return View (transaction);
}

C’est votre GET. Concernant votre POST, ça devrait aller.

Puisque vous ne faites aucun ModelBinding manuel, vous devriez être d’accord.

Dans les coulisses, les classeurs de modèle sont ce qui «colle» vos données de formulaire ou tout ce qui concerne HttpContext à vos objets et les transmet à votre contrôleur.

J’espère que ça aide.

Matériel de référence:
– Modèle ASP.NET MVC: créez un modèle BaseViewModel pour vos mises en page
– Vues ASP.NET MVC: transmission de données aux vues
– ASP.NET MVC ModelBinder: utilisez ModelBinders pour QueryStrings