【问题标题】:MVC 3 display data from a controller in anotherMVC 3 在另一个控制器中显示数据
【发布时间】:2014-04-07 21:32:33
【问题描述】:

我有 2 个控制器事件和学生,

我想在活动中将学生姓名显示为下拉列表?

学生包含姓名和年龄

事件应包含学生姓名和日期的下拉列表。

public class Student
{
    public int ID { get; set; }
    public string Name { get; set; }
    public DateTime DOB{ get; set; }
    public string Class { get; set; }
    public int grade { get; set; }
    public string teeth { get; set; }
    public string heart{ get; set; }
    public string eye{ get; set; }
    public string genitals { get; set; }
}

【问题讨论】:

  • 你有生殖器的财产?!到目前为止,您尝试了哪些代码?
  • 它是医生健康菜单的一部分,我的重点是姓名和年龄。

标签: c# asp.net asp.net-mvc asp.net-mvc-3 drop-down-menu


【解决方案1】:

创建另一个为您提供学生列表的类 - 例如 StudentProvider。然后编辑您的事件模型并在那里添加学生列表。在您的事件控制器中,通过 StudentProvider 的结果初始化此列表。然后在您的活动视图中显示此列表。

这种“提供者”模式将确保关注点分离,您不必担心将两个控制器组合在一起。

【讨论】:

  • 我是 mvc3 的新手,所以如果你能告诉我任何类型的例子,我将非常感激。
【解决方案2】:

如果我的猜测是正确的,这就是您希望在您的应用程序中发生的事情。

首先在您的“事件”模型中添加以下内容。

public class Event
{
        public int StudentID {get; set;}
        public IEnumerable<SelectListItem> DropDownStudent { get; set; }
        public void GetStudents()
        {
            var list = studentcontext.Select(e => new { Value = (int)e.ID, Text = e.Name.ToString() }).ToList();
            DropDownStudent = new SelectList(list, "Value", "Text");
        }
}

第二次在您的控制器中实例化您的模型并将其返回到您的视图中。

public ActionResult SampleView()
{
    var model = new Event();
    model.GetStudents(); //call GetStudent method so the DropDownStudent object will be populated.
    return View(model);
}

在您的视图中,使用“事件”作为您的模型并像这样添加一个@Html.DropDownListFor。

@model ProjectName.Model.Event

@using (Html.BeginForm())
{
@Html.DropDownListFor(m => m.StudentID, Model.DropDownStudent)

}

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 2019-05-13
    • 2018-08-16
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    相关资源
    最近更新 更多