根据下拉列表选择从数据库中获取数据

突击

我正在将Windows桌面应用程序移植到ASP.NET MVC应用程序。目前,我在数据库中有一个表,用于存储一堆竞赛事件,并且我想显示该事件的注册者列表。通过对数据库中的特定事件标题进行了硬编码,我设法显示了所有注册者。我已经设法从数据库表加载下拉列表。现在,我想显示基于下拉列表选择项的注册者,但是我真的不知道如何将选择列表转换为字符串,以便where子句可以匹配内容。

这是控制器

private raceEntities db = new raceEntities();
    // GET: Registrants
    public ActionResult Index()
    {


        ViewBag.RaceEvents = new SelectList(db.raceevents, "RaceEventID", "Name");

        var registrants = (from per in db.people
                           join personorgrole in db.personorganizationroles on per.PersonID equals personorgrole.PersonID
                           join personeve in db.personevents on personorgrole.PersonOrganizationRoleID equals personeve.PersonOrganizationRoleID
                           join eventcla in db.eventclasses on personeve.RaceEventID equals eventcla.RaceEventID
                           join personeventcla in db.personeventclasses on eventcla.EventClassID equals personeventcla.EventClassID
                           join raceeve in db.raceevents on eventcla.RaceEventID equals raceeve.RaceEventID
                           join organizationrolety in db.organizationroletypes on personorgrole.OrganizationRoleTypeID equals organizationrolety.OrganizationRoleTypeID
                           //where raceeve.Name == "Ruapehu Gravity Festival" //hardcoded event title
                           //where raceeve.Name == RaceEvents  raceeve.Name matches the selectlist above 

                           select new Registrants { LastName = per.LastName, FirstName = per.FirstName, RoleType = organizationrolety.Name }).Distinct().OrderBy( per => per.LastName);

        return View(registrants);
    }

这是观点

@model IEnumerable<IDFWebApp.Models.Custom.Registrants>
@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>
@using (Html.BeginForm())
{
@Html.DropDownList("RaceEvents")

<table style="width:100%">
    <tr>
        <th>First Name</th>
        <th>Last Name</th>
        <th>Role Type</th>
    </tr>
    @foreach (var person in Model)
    {
        <tr>
            <td>@person.LastName</td>
            <td>@person.FirstName</td>
            <td>@person.RoleType</td>
        </tr>
    }
</table>

}
达伦·格里菲斯(Darren Griffith)

你有几个问题。首先,您缺少的是如何构造视图使用的模型。您需要一些东西来保存用户传递回控制器的数据。我添加了该RaceEvent属性。您还需要一个属性来保存查询结果。那是Registrants财产。我添加了RegistrantsModel重命名的,但与您现在使用的模型相似。

namespace IDFWebApp.Models.Custom
{
    public class RegistrantsModel
    {
        public string LastName { get; set; }
        public string FirstName { get; set; }
        public organizationrolety RoleType { get; set; }
    }

    public class RegistrantsIndexModel
    {
        public string RaceEvent { get; set; }
        public IEnumerable<IDFWebApp.Models.Custom.RegistrantsModel> Registrants { get; set; }
    }
}

您还需要在控制器中使用post方法:

// Post: Registrants
[HttpPost]
public ActionResult Index(IDFWebApp.Models.Custom.RegistrantsModel model)
{
    model.Registrants = (
            from per in db.people
            join personorgrole in db.personorganizationroles on per.PersonID equals personorgrole.PersonID
            join personeve in db.personevents on personorgrole.PersonOrganizationRoleID equals personeve.PersonOrganizationRoleID
            join eventcla in db.eventclasses on personeve.RaceEventID equals eventcla.RaceEventID
            join personeventcla in db.personeventclasses on eventcla.EventClassID equals personeventcla.EventClassID
            join raceeve in db.raceevents on eventcla.RaceEventID equals raceeve.RaceEventID
            join organizationrolety in db.organizationroletypes on personorgrole.OrganizationRoleTypeID equals organizationrolety.OrganizationRoleTypeID
            where raceeve.Name == model.RaceEvents
            select new Registrants { LastName = per.LastName, FirstName = per.FirstName, RoleType = organizationrolety.Name }).Distinct().OrderBy( per => per.LastName);

    return View(model);
}

那可能不是全部,但它应该可以使您走得更远。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

想要使用php根据下拉列表选择从数据库中获取数据

根据数据库中的值自动选择下拉列表

根据下拉列表中的选项选择 mysql 数据库

根据Symfony表单中的下拉菜单选择从数据库中获取数据

根据多个下拉选择从mysql数据库中获取数据

根据“多选”下拉列表中的选择/取消选择项更新数据库

从数据库中获取数据到下拉列表

根据从JSP中从数据库检索的值检查单选按钮并选择下拉列表

根据数据库中的值选择下拉值

从下拉列表中选择的数据库中获取值

无法从与数据库绑定的下拉列表中获取价值

在JSP中,如何选择一个下拉列表值发出GET请求,并如何从数据库中获取其他下拉列表的数据?

从PHP中的数据库下拉列表

Laravel - 如何创建下拉列表,根据数据库值选择特定条目

如何使用数据库中的数据在下拉列表中设置默认选择和值?

从下拉列表中选择数据并将其保存到 Django 中的数据库中

如何从数据库中检索数据并将其显示在选择下拉列表中

从数据库中选择数据并插入到下拉列表中-MVC 4

从 SQL 数据库中获取数据到 Bootstrap MVC 中的 html 悬停下拉列表

如何使用Codeigniter从数据库中获取数据并将其显示在下拉列表中

尝试获取数据库中状态为活动的数据,应显示在下拉列表中

显示使用 laravel 8 从数据库中获取的下拉列表中的数据

从数据库的下拉列表中选择的指定ID获取值

如何从数据库获取数据到Angular的下拉列表中?

烧瓶中的链式下拉列表,从sqlite数据库获取数据

从 Firbase 数据库中获取键列表并加载到 reactjs 中的下拉列表

根据下拉菜单选择显示数据库中的值

根据数据库中的两个表显示下拉选择的值

如何根据数据库中的下拉选择更改文本框值