2013-05-13 4 views
0

Это может быть трудно объяснить, но, пожалуйста, несите меня ... Итак, у меня есть модель, которая объединяет две разные модели, чтобы я мог использовать данные, найденные как в одном представлении: Комбинированное:Доступ к кускам комбинированной модели в контроллере

public class EventFullModel 
{ 
    public AccessListModel AccessPointsList; 
    public EventListModel EventList; 
} 

Access Список Модель:

public class AccessListModel 
{ 
    public int Id { get; set; } 
    public List<SelectListItem> AccessPoints { get; set; } 
} 

Список событий Модель:

public class EventListModel 
{ 
    public int Id { get; set; } 
    public virtual string T { get; set; } 
    public virtual string C { get; set; } 
    public virtual string M { get; set; } 
    public virtual string L { get; set; } 
    public List<SelectListItem> Events { get; set; } 
    public IEnumerable<SelectListItem> Skills { get; set; } 
} 

I A m в настоящее время получает ошибку, которая, как мне кажется, проистекает из того факта, что метод контроллера для этого представления первоначально возвращал только EventListModel, тогда как теперь он пытается вернуть EventFullModel, так как я изменил наследование: Inherits="System.Web.Mvc.ViewPage<Cred.Web.Models.EventFullModel>". Поэтому на этом этапе я пытаюсь отредактировать контроллер, чтобы убедиться, что он пытается вернуть правильную модель для представления. Моя проблема заключается в следующем:

Это метод GET действие: public ActionResult Index(int? id) Первоначально контроллер работал только с EventListModel:

EventListModel model; 
model = new EventListModel { 
Id = 0, 
T = "", 
C = "", 
M = "", 
L = HttpContext.Session["L"].IsNull() ? "" : HttpContext.Session["L"].ToString(), 
Events = new List<SelectListItem>(), 
Skills = 
     DbQueryExecutor.ExecuteQuery(new SkillsList()).Select(e => new SelectListItem { Text = e.Certification, Value = e.Certification, Selected = false }) 

Так что я в принципе интересно, как я могу изменить это, чтобы получить доступ к тем кусочки EventListModel, но у меня есть model = new EventFullModel?

(Отказ от ответственности: Я изменил имена нескольких вещей, и я работаю над редактированием части программного обеспечения, которое я изначально не написал, поэтому я стараюсь как можно меньше изменить в надежде не «ломать» другие части программного обеспечения.)

ответ

0

Я предполагаю, что ваш метод [Post] вашего контроллера принимает параметр EventFullModel в качестве параметра.

[HttpPost] 
public ActionResult TestController(EventFullModel eventFullModel) 
{ 
    var accessListModel = eventFullModel.AccessPointsList; 
    var eventListModel = eventFullModel.EventList; 

    accessListModel.Id; 
.... 
    eventListModel.Id; 
.... 
} 

EDIT **

EventListModel model; 
model = new EventListModel{ 
.... 

var accessListModel = new AccessListModel{ 
    Id = 0, 
    AccessPoint = new List<SelectListItem>() 
}; 

var eventFullModel = new EventFullModel{ 
    AccessPointsList = accessListModel, 
    EventList = model 
}; 

return View(eventFullModel); 

Я предполагаю, так как ваш контроллер принимает в int? id раньше, это было id из EventListModel. Если вы хотите, id продолжать работать, то там должен быть отношения между EventListModel и AccessListModel

+0

Извините, но нет, это фактически метод действия GET. он просто возвращает информацию с сервера, он не передает какую-либо информацию ему. Кроме того, он получает только параметр '(int? Id)' в качестве параметра. Я обновлю свое оригинальное сообщение с этой информацией. Спасибо, но – Jfabs

+0

В настоящее время я работаю над кодом для использования AccessListModel в контроллере, но пока я это делаю, мне было интересно: Выполнение этого обязательного '{get; set;} 'объявления в EventFullModel, должно ли это повлиять на мою способность использовать HTML-помощники на мой взгляд? '<% = Html.TextBoxFor (x => x.EventsList.L)%>' – Jfabs

+0

Нет, это не повлияет на это. – SOfanatic

0

Если я вас правильно понял, вы хотите вернуть EventFullModel вместо EventListModel?

public ActionResult Index(int? id) { 
    return View(new EventFullModel { 
     EventList = new EventListModel { 
      Id = 0, 
      T = "", 
      C = "", 
      M = "", 
      L = ..., 
      Events = new List<SelectListItem>(), 
      Skills = ... 
     }, 
     AccessPointsList = ... createYourAccessPointsModel ... 
    }); 
} 
+0

Это правда, мне нужно вернуть «EventFullModel» вместо «EventListModel». Однако я сейчас работаю над решением SOfanatic. – Jfabs

Смежные вопросы