【发布时间】:2021-03-22 00:21:15
【问题描述】:
您好,我在 razor pages asp.net 中创建了一个预订页面。在我的页面上,我有两个下拉列表。一个用于该位置,另一个用于该特定位置的房间。我想将所选位置的值传递给显示房间的函数(函数名为 showRoom()),以便根据您选择的位置显示房间。我如何用 html 做到这一点?我尝试了一些东西,但并没有真正奏效。这是html代码
<td>Select location</td>
<div class="form-group">
<select id="locations" name="Location">
@foreach(var reservations in @Model.PopulateReservations())
{
<option>@Html.DisplayFor(m => reservations.LocationName)</option>
}
</select>
</div>
<td>Select Room</td>
<div class="form-group">
<select id="rooms" name="Room">
@foreach(var reservations in @Model.ShowRoom(string LocationName))
{
<option>@Html.DisplayFor(m => reservations.RoomName)</option>
}
</select>
</div>
这里是showRoom函数
public List<WorkspaceModel> ShowRoom(string loc)
{
var cs = Database.Database.Connector();
List<WorkspaceModel> res = new List<WorkspaceModel>();
using var con = new NpgsqlConnection(cs);
{
string query = "Select room FROM workspaces WHERE location = '"+ loc +"'";
using NpgsqlCommand cmd = new NpgsqlCommand(query, con);
{
cmd.Connection = con;
con.Open();
using (NpgsqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
res.Add(new WorkspaceModel { RoomName = dr["room"].ToString() });
}
}
con.Close();
}
}
【问题讨论】:
-
这种模式被称为“级联下拉菜单”,如果您搜索,您可以在线阅读大量示例等。本质上,它通常是通过使用 javascript 来处理第一个下拉菜单的“更改”事件,然后向服务器发送一个包含所选项目 ID 的 AJAX 请求,服务器返回有效选项以放入第二个下拉菜单,基于该 ID。
标签: html asp.net .net asp.net-core razor