删除webmatrix/razor中表和数据库中的条目



我已经用数据库中的信息填充了一个表,但是我需要另一个列,在那里我可以从表和数据库中删除一个条目。

我已经开始创建一个delete语句,但我不知道我需要删除什么,只删除一个条目。

下面是目前为止的代码:
@{
var db = Database.Open("StayInFlorida");
var sPropertyId = Request.QueryString["PropertyID"];
var roominfo = "SELECT * FROM RoomInfo WHERE PropertyID=@0";
var qroominfo = db.Query(roominfo, sPropertyId);
var droominfo = "DELETE ??? FROM RoomInfo"
if (IsPost){
    var deletesingleroom = db.Query(droominfo, sPropertyId);
}
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title></title>
    <link href="~/css/bootstrap.css" rel="stylesheet">
</head>
<body>
    
    <div id="tab2" class="tab-pane">
<h4>Room Information</h4>
<table class="table table-bordered">
<thead>
<tr>
  <th>Room Title</th>
  <th>Room Type</th>
  <th>Room Description</th>
  <th>Delete Room</th>           
</tr>
</thead>
<tbody>
@foreach (var row in qroominfo)
{
<tr>
<td>@row.RoomTitle</td>
<td>@row.RoomType</td>
<td>@row.RoomDescription</td>
<td>
<form method="post">
<button type="submit" class="btn btn-success">Delete</button
</form>
</td>
</tr>
}
</tbody>
</table>
</div>
</body>
</html>

我认为你在SQL中的delete语句一般有问题,而不是特别在Razor上下文中。

delete语句的语法是
DELETE FROM RoomInfo WHERE <some condition>

如果你只是发送这个查询:

DELETE FROM RoomInfo

这将删除所有的行。
要从POST结果中只删除一行,这和select:

差不多
DELETE FROM RoomInfo WHERE PropertyID=@0
编辑:

现在您有一个唯一的标识符来标识您想要删除的房间,您可以更新您的代码:

首先,将您的房间Id链接到您的删除按钮:

<form method="post">
    <input type="text" name="id-room" value="@row.RoomID">
    <button type="submit" class="btn btn-success">Delete</button
</form>

当您提交删除表单时,检索要删除的房间Id:

var sRoomId = Request.QueryString["id-room"];
var droominfo = "DELETE FROM RoomInfo WHERE RoomId = " + sRoomId

请注意,这段代码很糟糕,并且会有很多安全漏洞。
例如,您不应该访问razor文件中的数据库。你的工作方式就像在使用老式的PHP。
试着让自己了解ASP。净MVC。

最新更新