在WebMatrix中使用ASP.NET Razor编辑数据页面

时间:2012-02-26 17:43:27

标签: asp.net ado.net razor

我在WebMatrix中使用ASP.NET Razor编辑数据时遇到了一些问题 我使用Update命令编写此代码以编辑数据但不幸的是它不起作用:s:s

剃刀代码:

    @{
      {
            var userId = Request["UserId"];
    var db = Database.Open("intranet");
    var query = "UPDATE Personne SET Demande = @0 WHERE UserId LIKE '%@1%'";
    db.Execute(query,"refuser", userId);
 }
    }

html代码:

    <form action="responsable.cshtml" method="post">
    <input type="hidden" name="UserId" value="saadwafqui" />
    <input type="submit" value="Oui" /> 
</form>

1 个答案:

答案 0 :(得分:0)

您的代码容易受到SQL注入攻击。我建议你解决这个问题。你似乎也在使用一些IsPost变量,这个变量在定义的地方并不十分清楚。

示例:

@{
    var userId = Request["userid"];
    var db = Database.Open("intranet");
    var query = "UPDATE Personne SET Demande = @0 WHERE UserId LIKE '%' + @1 + '%'";
    db.Execute(query, "refuser", userId);
}

注意LIKE子句的语法:

LIKE '%' + @1 + '%'

这将匹配中间有UserId的所有记录。如果您只想匹配UserId开头的记录和请求中的值:

LIKE '%' + @1

如果您想要完全匹配,只需使用=运算符而不是LIKE子句。

此外,您的标记看起来完全坏了。没有window.location属性。也许你的意思是这样的:

<form action="responsable.cshtml" method="post">
    <input type="hidden" name="userid" value="saadwafqui" />
    <input type="submit" value="Oui" /> 
</form>

或者如果您愿意,可以使用GET请求:

<form action="responsable.cshtml" method="get">
    <input type="hidden" name="userid" value="saadwafqui" />
    <input type="submit" value="Oui" /> 
</form>