У меня есть представление ASP/MVC, которое отображает данные из модели, а также содержит частичный вид с формой, использующей другую модель. Есть ли способ объединить их в одну точку зрения? Результатом будет то, что значения отображения основаны на модели A, но форма на странице представляет модель B. Возможно ли это?Несколько моделей в ASP-представлении
ответ
Если две вещи тесно связаны между собой, вы можете использовать модель представления для работы как с вашей точки зрения:
public class FooViewModel
{
public SomeModelForDisplay Foo { get; set; }
public SomeModelForForm Bar { get; set; }
}
в своем действии, инициализировать как:
public ActionResult Foo(int id)
{
var foo = db.Foos.Find(id);
if (foo == null)
{
return new HttpNotFoundResult();
}
var model = new FooViewModel
{
Foo = foo,
Bar = new SomeModelForForm()
};
return View(model);
}
Если две вещи не связаны вообще или, в частности, если частичное вызывается чем-то вроде вашего макета вместо немедленного просмотра, тогда более целесообразно использовать дочернее действие. По сути, вы будете просто обрабатывать дисплей часть, как будто ничего другого происходит:
public ActionResult Foo(int id)
{
var foo = db.Foos.Find(id);
if (foo == null)
{
return new HttpNotFoundResult();
}
return View(foo);
}
Затем вы добавите еще одну акцию, чтобы обрабатывать форму:
[ChildActionOnly]
public ActionResult SomeForm()
{
var model = new SomeModelForForm();
return PartialView("_SomeForm", model);
}
Затем добавьте частичный вид для визуализации только формы:
Просмотры \ Foo \ _SomeForm.cshtml
@model SomeModelForForm
<!-- form fields here -->
Затем в вашем представлении/расположение - в основном там, где вы хотите, чтобы форма на самом деле будет отображаться:
@Html.Action("SomeForm", "Foo")
Где "Foo"
здесь имя контроллера этого ребенка действие in
Я рекомендую вам использовать модель A, содержащую модели B и C. B загружается при загрузке страницы, а C загружается частичным.
Еще одно решение coule bethat у вас есть модель A (данная страница для бритвы), затем добавьте модель B на страницу, используя частичную, а затем возвратите смесь A и B. Вы просто обратили внимание на именование из полей для того, чтобы сделать модель связывания работать должным образом, например
а имеет
- Firstname
- ЬавЬЫате
и в имеет
- улица
- телефон
Затем, если вы поставите edirotfor оба поля, модель, которая может быть получена в контроллере может быть модель C, которая имеет
- ПгвЬЫате
- LastName
- улица
- телефон
- 1. Нокаут несколько моделей моделей - undefined
- 2. Несколько моделей
- 3. Несколько моделей в представлении
- 4. Несколько моделей в Myrrix
- 5. Несколько моделей в разработке
- 6. Несколько моделей в MVC
- 7. Несколько моделей в UpdateView
- 8. Несколько раскрывающихся списков, несколько моделей
- 9. несколько моделей моделей с несколькими страницами входа
- 10. Несколько моделей моделей и основанных на разрешении
- 11. Несколько наборов моделей в Django
- 12. Несколько моделей в представлении (mvc)
- 13. Несколько моделей в одном представлении
- 14. Несколько моделей в 1 режиме?
- 15. Связать несколько моделей в KnockoutJs
- 16. Несколько моделей в одном представлении
- 17. загрузить несколько моделей в Tensorflow
- 18. Несколько моделей в одном виде
- 19. MVC - несколько моделей в целях
- 20. Несколько линейных моделей
- 21. Контроллер, использующий несколько моделей?
- 22. Несколько моделей Devate
- 23. Несколько моделей in passport.js
- 24. Rails Devise - несколько моделей
- 25. переплета несколько моделей входных
- 26. Несколько моделей и Paperclip
- 27. Django несколько подобных моделей
- 28. Запросить несколько моделей Rails
- 29. Query mongoose несколько моделей
- 30. MVC Несколько моделей
Создайте модель, которая предоставляет модели, необходимые для представления в качестве свойств, например 'myViewModel.CustomerModel.CustomerName' и' myViewModel.OrderModel.OrderNumber' и т. д. – DGibbs
Если это ASP.NET, а не классический ASP, всегда указывайте, что это ASP.NET, так как они очень разные. Я уже знаю, что вы имеете в виду ASP.NET, но новичок может этого не сделать. – maniak1982
Я добавил тег для asp.NET ... Я стараюсь не помещать этот материал в заголовок/вопрос, потому что модератор модератора любит оставлять раздражающие комментарии о том, как мои вопросы не следуют определенному набору правил. – Sam