The closest I found to my question was this but I don't understand how it would be used.MVC, C# Передача parent.id дочернему индексу или создание действия?
<% object parentModel = ViewContext.ParentActionViewContext.ViewData.Model; %>
У меня есть шлюза стол и датчика таблицу. Шлюзы могут иметь несколько датчиков. Таблицы имеют связь от 1 до многих (шлюз к датчику), а таблица датчиков имеет поле шлюза, по которому датчик связан с шлюзом.
Я использую рамку сущности У меня есть класс репозитория шлюза У меня есть класс контроллера шлюза У меня есть частичный класс напарника шлюза для обработки аннотаций данных у меня есть индексный просмотр, который содержит список шлюзов и обеспечивает классические crud pages
В списке шлюзов я добавил ссылку для подключения к датчикам, связанным с данным шлюзом.
Все хорошее до сих пор (надеюсь).
Я предполагаю, что теперь я должен создать ту же настройку для моей таблицы датчиков; хранилище, контроллер, класс друзей и т. д.
Q1: Что такое подход MVC к перечислению всех датчиков (дочерних записей) для данного шлюза (родительская запись)?
На каждой линии элемента шлюза я генерировал ссылку, которая выглядит следующим образом:
localhost/sensor/list/5
Это указывает на то, что список должен отображать только датчики для текущего шлюза.
Я не думаю, что это правильный путь. Я думаю, что я должен быть пропусканием модели шлюза в фоновом режиме, так что в любое время я оформить ссылку так:
localhost/sensor/
было бы просто понять контекст текущего шлюза.
Q2: Следующая проблема заключается в том, как сделать то же самое для создания датчика. Я могу настроить контроллер создания и выставить форму представления, но как указать, с каким шлюзом должен быть связан датчик?
В верхней части класса SensorController:
SensorRepository repository = new SensorRepository();
GatewayRepository Grepository = new GatewayRepository();
Мой список Датчик метод ActionResult выглядит следующим образом:
public ActionResult List(int id)
{
Gateway gateway = Grepository.GetGateway(id);
var sensors = repository.FindGatewaySensors(id);
return View(sensors);
}
Мой датчик Создать ActionResult метод выглядит следующим образом (обратите внимание, что я устанавливаю значение шлюза перед его прохождением к виду, оно не редактируется в форме просмотра):
// GET: /Sensor/Create
public ActionResult Create(int id)
{
Sensor sensor = new Sensor();
sensor.gatewayid = id;
return View(sensor);
}
Вот Создать ActionResult пост метод:
[HttpPost]
public ActionResult Create(FormCollection collection)
{
Sensor sensor = new Sensor();
if (TryUpdateModel(sensor))
{
repository.Add(sensor);
repository.Save();
return RedirectToAction("List", new { id = sensor.gatewayid });
}
return View(sensor);
}
Но это просто не кажется правильным. Готов поспорить, есть простой подход, который мне не хватает. Пожалуйста, просветите меня.
Пожалуйста, [не используйте подписи или подписи] (http://stackoverflow.com/faq#signatures) в своих сообщениях. – meagar 2010-12-08 05:13:06