Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用webmatrix/razor读取复选框_Sql_Razor_Webmatrix - Fatal编程技术网

Sql 使用webmatrix/razor读取复选框

Sql 使用webmatrix/razor读取复选框,sql,razor,webmatrix,Sql,Razor,Webmatrix,我的网站上的复选框有问题 以下是我目前掌握的代码: @{ Layout = "~/_SiteLayout.cshtml"; WebSecurity.RequireAuthenticatedUser(); var db = Database.Open("StayInFlorida"); var rPropertyId = Request.QueryString["PropertyID"]; var Propertyinfo = "SELECT * FROM PropertyInfo WH

我的网站上的复选框有问题

以下是我目前掌握的代码:

@{
Layout = "~/_SiteLayout.cshtml";

WebSecurity.RequireAuthenticatedUser(); 

var db = Database.Open("StayInFlorida");

var rPropertyId = Request.QueryString["PropertyID"];

var Propertyinfo = "SELECT * FROM PropertyInfo WHERE PropertyID=@0";
var qPropertyinfo = db.QuerySingle(Propertyinfo, rPropertyId);

if(IsPost){
var sql = "INSERT INTO PropertyInfo (FePool, FeJac, FeGames) VALUES (@0, @1, @2) WHERE PropertyID=@3";
db.Execute(sql, Request["check1"], Request["check2"], Request["check3"], rPropertyId);
}
}

<form method="post">

<div>
<input type="checkbox" name="check1" value="true"  /> 
  Value 1
<br/>
<input type="checkbox" name="check2" value="check2" /> 
  Value 2
<br/>
<input type="checkbox" name="check3" value="check3" /> 
  Value 3
<br/>


<div>
<input type="submit" name="buttonSubmit" value="Submit" />
</div>
</form>
@{
Layout=“~/\u siteloayout.cshtml”;
WebSecurity.RequireAuthenticatedUser();
var db=Database.Open(“stayinfrida”);
var rPropertyId=Request.QueryString[“PropertyID”];
var Propertyinfo=“从Propertyinfo中选择*其中PropertyID=@0”;
var qPropertyinfo=db.QuerySingle(Propertyinfo,rPropertyId);
如果(IsPost){
var sql=“插入PropertyInfo(FePool、FeJac、FeGames)值(@0、@1、@2),其中PropertyID=@3”;
执行(sql、请求[“检查1”]、请求[“检查2”]、请求[“检查3”]、rPropertyId);
}
}
值1

价值2
价值3

我需要做的是检查数据库中的3列,看看它们是否被设置为true(这些列被设置为“bit”)。如果是,那么我希望复选框显示为选中。我还希望能够切换这些复选框,并使用表单发布“true”或“false”,以发布到数据库中。

您的
INSERT
语句中有一个
WHERE
子句,这毫无意义。如果要插入,则创建新行。我怀疑您打算
更新现有行,在这种情况下,您的SQL应该是:

"UPDATE PropertyInfo SET FePool = @0, FeJac= @1, FeGames = @2 WHERE PropertyID=@3"
如果未选中复选框,则Request.Form集合中将不包含该复选框的任何内容。如果选中,则传递的值在默认情况下为“开”,或在“值”属性中指定的任何值。对于check1,这将是“true”。对于check2,这将是“check2”。您需要确定该复选框是否实际包含在Request.Form集合中,然后相应地设置要提交到数据库的值。如果要根据复选框是否选中而通过
true
false
,可以执行以下操作:

var c1 = !Request["check1"].IsEmpty();
var c2 = !Request["check2"].IsEmpty();
var c3 = !Request["check3"].IsEmpty();
var sql = "UPDATE PropertyInfo SET FePool = @0, FeJac= @1, FeGames = @2 WHERE PropertyID=@3";
db.Execute(sql, c1,c2,c3,rPropertyInfo);
现在您有了一系列布尔值,您可以使用这些布尔值来确定是否选中复选框,方法是:


很明显,您现在不需要在IsPost块中的
c1-c3
变量前面使用
var

谢谢Mike,这非常有效,是的,我正在尝试更新,而不是插入。有点注意力不集中。因此,现在我可以勾选框并将“true”插入数据库,如何检查在首次加载页面时是否已经勾选了框?我假设某种@if语句连接到每个复选框?但该方法不会查询数据库以检查其值是否设置为“true”对吗?不。您必须自己添加代码,并根据查询结果设置c1等值。好的,在我上面的代码中,我已经运行查询从数据库(qpropertyinfo)获取该信息,但是如何设置c1等的值?这会是一个@if声明吗?嗨,迈克,你对此有什么反馈吗?正如我所说的,它现在工作了一半,这很好。
<input type="checkbox" name="check1" checked="@c1" /> Value 1<br/>
<input type="checkbox" name="check2" checked="@c2" /> Value 2<br/>
<input type="checkbox" name="check3" checked="@c3" /> Value 3<br/>
var rPropertyId = Request.QueryString["PropertyID"];
var Propertyinfo = "SELECT * FROM PropertyInfo WHERE PropertyID=@0";
var qPropertyinfo = db.QuerySingle(Propertyinfo, rPropertyId);
bool c1 = qPropertyinfo.FePool;
bool c2 = qPropertyinfo.FeJac;
bool c3 = qPropertyinfo.FeGames;