Я хочу, чтобы мой контроллер поместил модель А в представление А и модель В в представление B.
БО классы:
class modelA{
...
}
class modelB{
...
}
Код контроллера:
...other using statements...
using MyProj.DAL;
using MyProj.BO;
public class MyController:Controller
{
//Create object of your Data Access Layer's MyDAL functionality
MyDAL DALobj = new MyDAL();
public ActionResult viewAList(){
modelA mobj = DALobj.FetchObjFromDB();
return View(mobj);
}
public ActionResult viewACreate(modelA newobj){
...check if modelstate is okay and tweak your model object here...
DALobj.SendDataToDB(newobj);
return RedirectToView("some other view | index");
}
public ActionResult viewBList(){
...same as viewAList() but with modelB this time...
}
public ActionResult viewBCreate(){
...same as viewACreate() but with modelB this time...
}
}//controller ends here
Я думаю, что спрашивают:
Из того, что я знаю, контроллер может быть связан только с одним представлением
используя только одну модель.
Я перевожу это как:
- Может быть только один вид, использующий одну модель, связанную с конкретным контроллером.
который, мне кажется, выглядит так:
public class PersonController : Controller
{
static List<Person> people = new List<Person>();
public ActionResult Index()
{
return View(people);
}
public ActionResult Details(Person person)
{
return View(person);
}
public ActionResult Create()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Person person)
{
if (!ModelState.IsValid)
{
return View("Create", person);
}
people.Add(person);
return RedirectToAction("Index");
}
}
Здесь один контроллер, четыре действия, одна модель. Таким образом, один контроллер связан с одной моделью, а не только с представлением (которое вы можете получить; удалив любые две другие функциональные возможности (не функции, функциональность Create имеет две функции, по одной для каждой GET & POST))
Теперь возникает вопрос, можете ли вы использовать несколько моделей в одном контроллере?
Ответ: Да. Я только что показал это в первом примере кода.
Вопрос: может ли быть две + модели в одном контроллере?
Ответ: да. Создайте модель обертки, поместите в нее две другие модели. и БАМ!
Как?
(Конечно. Вздох!)
МОДЕЛЬ | BO:
public class BigObjClass{
public A a;
public B b;
}
public class A{
public int serial{get;}
public int age{get;set;}
}
public class B{
public string Name{get;}
public string Address{get;set;}
}
Теперь, как в самом первом примере кода, используйте объект BigObjClass
и передайте его представлениям.
Пожалуйста, дайте мне знать, если что-то из этого имеет для вас смысл.