J'ai un site ASP.NET MVC 3 simple, depuis mon contrôleur hors de l'action d'édition Je passe un objet (une classe qui est également mappée par nhibernate)Conserver les données d'objet après les avoir transmises à une vue fortement typée
Après avoir édité et cliqué sur enregistrer, je le passe à la méthode [HTTPPost] decoraded mais toutes les propriétés sont correctes, extrait la propriété "id" avec une valeur de guid équivalente à NULL (00000000-0000-000 ...).
Le modèle de domaine présente-t-il un problème pour taper fortement mes vues? le problème peut être qu'ID a:
{get; private set;}
???
Merci d'avance.
Voici le code:
Mon Vue:
'@model fnh.DataModel.Kunde
@{
View.Title = "EditKunde";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>EditKunde</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Fields</legend>
@Html.EditorFor(model => model._id)
@Html.EditorFor(model => model._KdNr);
<div class="editor-label">
@Html.LabelFor(model => model._Name)
`enter code here` </div>
<div class="editor-field">
@Html.EditorFor(model => model._Name)
@Html.ValidationMessageFor(model => model._Name)
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
'
Mon contrôleur Actions:
' public ActionResult EditKunde (id Guid) { retour View (_kunden .GetKundeById (id)); }
[HttpPost]
public ActionResult EditKunde(Kunde kunde)
{
Ansprechpartner anp = new Ansprechpartner();
anp._Name = "JustATry";
kunde._Ansprechpartner.Add(anp);
`enter code here` _kunden.EditKunde(kunde);
return View();
}'
Merci pour votre réponse, j'ai juste ajouté mon code ... – john84
Il semble que le DefaultModelBinder ne se lie pas à une propriété dont l'accesseur est privé ou protégé. Essayez de le changer pour '{get; ensemble;} '. Quelqu'un peut-il confirmer cela? – CGK
Oui c'est ça ... mais il devrait y avoir une solution, ou devrais-je "dupliquer" mon domaine et envelopper les données dans un propre ViewModel (ce qui semblerait être du code en double) ??? Une idée ou un conseil? – john84