Как создать представление представления, когда модель имеет ссылку на другую модель? - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь выучить ASP.NET MVC.В настоящее время я хочу отобразить страницу создания модели, которая имеет ссылку на другую модель, и заставить пользователя выбрать другую модель из выпадающего списка.Чтобы быть более конкретным, вот код Category модель

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }
}

А вот код Food модель

public class Food
{
    public int Id { get; set; }
    public string Name { get; set; }
    public Category Category { get; set; }
}

Рассмотрим, у меня есть в памяти списоккатегории с именем categories, и я хочу убедиться, что когда я отправляю пользователю представление представления с помощью return View(); в HomeController методе Create, он получает не только имя для выбора, но и раскрывающийся список categories,Также учтите, что в ближайшем будущем я хочу сгенерировать таблицы базы данных в соответствии с этими классами (сначала подход кода Entity Frameworks), поэтому добавление свойств в классы не кажется хорошей идеей.Как я могу это сделать?

1 Ответ

0 голосов
/ 13 октября 2018

Вы можете использовать viewBag для передачи более одной модели из контроллера для просмотра таким образом

Контроллер

Public ActionResult Index()
{  
 viewbag.Childone=Childone();
 viewbag.Childtwo=Childtwo()
 return View(parentModel);
}

[HttpPost]
public ActionResult Index(ParentModel parentModel,Childone child_one ,Childtwo child_two)
 {
  //do something with models passed....
 }

Просмотр

 @model parentModel

 @{
    Childone  = viewbag.Childone as Childone;
    Childtwo  = viewbag.Childtwo as Childtwo;
  }

   //just use these models......like
 //this is Main parent model
 <p>@Model.propertyname</p> 

   //these are child
 <p>@Childone.propertyname</p>

 <p>@Childtwo.propertyname</p>

При нажатии кнопки отправки модели

var parentModel = [
  { id: 1, color: 'yellow' },
 ];
 var child_one = [
    { id: 1, color: 'yellow' },

];   

 var child_two = [
    { id: 1, color: 'yellow' },

];      



$.ajax({
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    type: 'POST',
    url: '/Home/Index',
    data:JSON.stringify(parentModel:parentModel child_one:child_one,child_two:child_two),
    success: function () {          

    },
    failure: function (response) {          

    }
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...