【发布时间】:2021-03-10 04:04:18
【问题描述】:
我试图在 aspnet Razor 页面中创建一个预订页面。我无法将值从 html 添加到 postgresql 数据库。当我从选择标签中选择一个选项并单击提交时,Locationid 和 Roomid 不会被添加。值只是保持 0,我不知道为什么。电子邮件和 Dayid 等其他输入标签确实有效,但它们确实被添加到数据库中。 谁能告诉我怎么了? 这是html代码:
<form action="" method="post">
<fieldset>
<tr>
<td>Email</td>
<div class="form-group">
<input id="txtEmail" name="Email" class="form-control" type="email">
</div>
<td>Date</td>
<div class="form-group">
<div class='input-group date' id='datetimepicker1' name="Dayid">
<input type='date' class="form-control" name="Dayid" />
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
<td>Select location</td>
<div class="form-group">
<select id="locations" name="Locationid">
@foreach(var reservations in @Model.PopulateReservations())
{
<option value="0">@Html.DisplayFor(m => reservations.LocationName)</option>
}
</select>
</div>
<td>Select Room</td>
<div class="form-group">
<select id="rooms" name="Roomid">
@foreach(var reservations in @Model.ShowRoom())
{
<option value="0">@Html.DisplayFor(m => reservations.RoomName)</option>
}
</select>
</div>
<div class="form group">
<button type="submit" value="Submit" asp-page-handler="Submit" class="btn btn-dark btn-lg"> Submit</button>
</div>
</tr>
</fieldset>
@Model.Info
</form>
这里是 html 页面的 c# 端:
namespace Project_Corona.Pages
{
public class EmployeepageModel : PageModel
{
private readonly ILogger<EmployeepageModel> _logger;
public EmployeepageModel(ILogger<EmployeepageModel> logger)
{
_logger = logger;
}
public string Info { get; set; }
public void OnGet()
{
}
public void OnPostSubmit(ReservationModel reservation)
{
this.Info = string.Format("Reservation successfully saved");
CreateReservation(reservation.Reservationid, reservation.Dayid, reservation.Roomid, reservation.Email, reservation.Locationid);
}
public void CreateReservation(int Reservationid, DateTime Dayid, string Roomid, string Email, string Locationid)
{
var cs = Database.Database.Connector();
using var con = new NpgsqlConnection(cs);
con.Open();
var sql = "INSERT INTO reservation(reservationid, dayid, roomid, email, locationid) VALUES(@Reservationid, @Dayid, @Roomid, @Email, @Locationid)";
using var cmd = new NpgsqlCommand(sql, con);
cmd.Parameters.AddWithValue("reservationid", Reservationid);
cmd.Parameters.AddWithValue("dayid", Dayid);
cmd.Parameters.AddWithValue("roomid", Roomid);
cmd.Parameters.AddWithValue("email", Email);
cmd.Parameters.AddWithValue("locationid", Locationid);
cmd.Prepare();
cmd.ExecuteNonQuery();
con.Close();
}
public List<WorkspaceModel> PopulateReservations()
{
var cs = Database.Database.Connector();
List<WorkspaceModel> res = new List<WorkspaceModel>();
using var con = new NpgsqlConnection(cs);
{
string query = "Select location FROM workspaces";
using NpgsqlCommand cmd = new NpgsqlCommand(query, con);
{
cmd.Connection = con;
con.Open();
using (NpgsqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
res.Add(new WorkspaceModel { LocationName = dr["location"].ToString() });
}
}
con.Close();
}
}
return res;
}
public List<WorkspaceModel> ShowRoom()
{
var cs = Database.Database.Connector();
List<WorkspaceModel> res = new List<WorkspaceModel>();
using var con = new NpgsqlConnection(cs);
{
string query = "Select room FROM workspaces";
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();
}
}
return res;
}
}
}
如果有必要,这里是预订模型:
namespace Project_Corona.Models
{
public class ReservationModel
{
[BindProperty]
public int Reservationid {get; set;}
[BindProperty]
public DateTime Dayid {get; set;}
[BindProperty]
public string Roomid {get; set;}
[BindProperty]
public string Email {get; set;}
[BindProperty]
public string Locationid {get; set;}
}
}
【问题讨论】:
标签: html postgresql forms asp.net-core razor-pages