0

这可能很难解释,但请多多包涵……所以,我有一个模型,它结合了两个不同的模型,这样我就可以在一个视图中利用这两个模型中的数据: 结合:

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

访问列表模型:

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; }
}

我目前收到一个错误,我认为这是因为该视图的控制器方法最初只返回了,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?

(免责声明:我已经更改了一些东西的名称,并且我正在编辑一个我最初没有编写的软件,所以我试图尽可能少地更改,希望不会“破坏”其他部分软件。)

4

2 回答 2

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 ...
    });
}
于 2013-05-14T12:49:00.537 回答
0

我猜你[Post]的控制器的操作方法正在接收一个EventFullModel对象作为参数。

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

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

编辑 **

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过,这idEventListModel. 如果你想让它继续工作,那么和id之间必须有关系EventListModelAccessListModel

于 2013-05-13T21:15:00.517 回答