erkannt Ich habe ein Asp.NET MVC-Projekt, Datenbank zuerst. Ich habe eine Erstellen Aktion in Platz Controller. In der Aktionsmethode bekomme ich meine Daten wie folgt aus:Eine zirkuläre Referenz wurde beim Serialisieren eines Objekts vom Typ 'System.Data.Entity.DynamicProxies'
// GET: /Place/Create
[Authorize]
public ActionResult Create()
{
string userId = User.Identity.GetUserId();
var places = db.Places.Where(p => p.UserId == userId);
var placesVM = new PlacesVM(places);
ViewBag.UserId = new SelectList(db.AspNetUsers, "Id", "UserName");
return View(placesVM);
}
My Place View-Modell sieht wie folgt aus:
public class PlacesVM
{
public IQueryable<Place> Places { get; set; }
public Place Place { get; set; }
public PlacesVM(IQueryable<Place> places)
{
Places = places;
Place = new Place();
}
}
My Place Modell:
public partial class Place
{
public string Id { get; set; }
public string UserId { get; set; }
//TODO: Validare cordonate
public decimal X { get; set; }
public decimal Y { get; set; }
[Display(Name = "Title")]
[Required]
[StringLength(250, MinimumLength = 5)]
public string Titlu { get; set; }
[Display(Name = "Description")]
[Required]
[StringLength(500, MinimumLength = 10)]
public string Descriere { get; set; }
[Required]
[Range(0, 1)]
public byte Public { get; set; }
public virtual AspNetUser AspNetUser { get; set; }
}
AspNetUser:
public partial class AspNetUser
{
public AspNetUser()
{
this.AspNetUserClaims = new HashSet<AspNetUserClaim>();
this.AspNetUserLogins = new HashSet<AspNetUserLogin>();
this.Places = new HashSet<Place>();
this.UserComments = new HashSet<UserComment>();
this.AspNetRoles = new HashSet<AspNetRole>();
}
public string Id { get; set; }
public string UserName { get; set; }
public string PasswordHash { get; set; }
public string SecurityStamp { get; set; }
public string Discriminator { get; set; }
public virtual ICollection<AspNetUserClaim> AspNetUserClaims { get; set; }
public virtual ICollection<AspNetUserLogin> AspNetUserLogins { get; set; }
public virtual ICollection<Place> Places { get; set; }
public virtual ICollection<UserComment> UserComments { get; set; }
public virtual ICollection<AspNetRole> AspNetRoles { get; set; }
}
Jetzt möchte ich Model.Pl verwenden Aces Proprietes im Javascript-Teil der Seite. Wie kann ich das machen?
Ich habe an folgende versucht:
<script>
var model = '@Html.Raw(Json.Encode(Model))';
</script>
Aber ich habe diesen Fehler:
{"A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.Place_084A987E8F6FBE574A22E813FE314F2894AF728F244BDD6582AF50929FF1161D'."}
ich die folgenden Links auf SO geprüft haben, aber verwalten nicht zu lösen mein Problem:
Nicht verwandt, aber es müsste 'var model = @ Html.Raw (Json.Encode (Model));' (ohne die Anführungszeichen) sein, wenn Sie das Modell zu einem JavaScript-Objekt serialisieren wollten. –
Sie müssen das Modell für 'Place' anzeigen (es würde eine Eigenschaft enthalten, die ein Objekt ist, das eine Eigenschaft' Place' enthält, die einen Zirkelverweis verursacht) –
Enthält die Klasse 'AspNetUser' eine Eigenschaft für' Place'? –