0

Мне нужно получить доступ к свойствам навигации в действии редактирования после публикации, но текущий способ, который я сделал, выглядит не лучшей альтернативой, так как я делаю вызов в базу данных и «повторно заполняю» модель. Есть ли лучшее решение?Навигационные свойства в действии post

public class Foo 
{ 
    public int Id { get; set; } 
    public string SomeProp { get; set; } 
} 

public class Bar 
{ 
    public int Id { get; set; } 
    public int FooId { get; set; } 
    public Foo Foo { get; set; } 
} 

[HttpPost] 
public ActionResult Edit(Bar bar) 
{ 
    // Here bar.FooId is set but bar.Foo is null as bar is not a Dynamic Proxy. 

    ... 

    bar = db.Bar.Find(bar.id); 
    TryUpdateModel(bar); 

    return View(bar); // Here bar.Foo is set. 
} 

Другой способ я нашел:

db.Bar.Attach(bar); 
db.Entity<Bar>(bar).Reference(b => b.Foo).Load(); 

Но это требует я сделать ссылку на все свойства навигации мне нужно.

ответ

0

Я не уверен на 100%, если это правильный или лучший способ сделать это, но в вашей форме пользовательского интерфейса, которая обрабатывает сообщение, элементы интерфейса должны быть привязаны к свойствам навигации или вы также можете передать их как скрытые поля, если они не изменяются

<!-- example of hidden properties --> 
@Html.HiddenFor(x=>x.Foo.FooId) 

<!-- exampld of editable UI element mapped to navigation property's someprop property --> 
@Html.TextBoxFor(x=>x.Foo.SomeProp) 
Смежные вопросы