首页 > 经验 > 关键词   >  Web开发最新资讯  > 正文

系列教程 使用微软WebMatrix进行Web开发(6)

2011-03-17 15:59 · 稿源:站长之家

所以,在您的代码中,您将需要通过某种方式了解是正在使用 GET 获取页面还是正在使用 POST 执行它。幸运的是,.NET Framework 支持检查谓词,而无需分解 HTTP 标头来检查您正在获取的数据类型,只需使用 If(IsPost) 检查语句,如果它为 true,则表明用户使用了一个窗体来发布信息。

以下为引用的内容:

 @{

   2:    If(IsPost)

   3:    {

   4:      // Do something on the POST

   5:    }

   6:  }

   7:   

当设置该窗体时,您为用户提交的值提供了名称(formName、formGenre、formYear)。当浏览器调用服务器时,它将使用此名称,方法是发送一条包含“formName=something”、“formGenre=something”、“formYear=something”等的消息。

所以,您首先将需要设置一些服务器变量来持有这些值,然后您从 HTTP POST 中读取它们。这比听起来简单得多:)

以下为引用的内容:

@{

   2:    var MovieName="";

   3:    var MovieGenre="";

   4:    var MovieYear="";

   5:    if(IsPost){

   6:      MovieName=Request["formName"];

   7:      MovieGenre=Request["formGenre"];

   8:      MovieYear=Request["formYear"];

   9:    }

  10:  }

 在这里可以看到,设置了 3 个变量(MovieName、MovieGenre 和 MovieYear),它们使用用户提交的值进行了初始化。在下一步中,将添加代码来打开数据库并将此信息添加到其中。

添加到数据库

在上一部分中,当从数据库检索数据时,编写一个 SQL“SELECT”查询,它从数据库中选择数据供您读取。在这种情况下,您可以将数据添加到数据库,这会使用 insert 查询。

SQL INSERT 命令使用以下语法

INSERT INTO Table (Column1, Column2, ...ColumnN) VALUES (Value1, Value2, ... ValueN)

 我们看一下如何在代码中这样做:

以下为引用的内容:

@{

   2:  var MovieName="";

   3:  var MovieGenre="";

   4:  var MovieYear="";

   5:    if(IsPost){

   6:      MovieName=Request["formName"];

   7:      MovieGenre=Request["formGenre"];

   8:      MovieYear=Request["formYear"];

   9:      var SQLINSERT = "INSERT INTO Favorites (Name, Genre, ReleaseYear) VALUES (@1, @2, @3)";

  10:      var db = Database.Open("Movies");

  11:      db.Execute(SQLINSERT, MovieName, MovieGenre, MovieYear);

  12:    }

  13:  }

可以看到,我们创建了一个名为 SQLINSERT 的字符串来执行该命令。Razor 允许您在此字符串中指定参数化的值,所以无需尝试向字符串中添加“MovieName”、“MovieGenre”和“MovieYear”的值,我们只需使用 @1、@2 和 @3。当执行该查询时,该框架允许我们替换它们。您也可以“清除”参数之后在将它们输入到查询中。这可以防止人们将 SQL 代码作为参数传递,实施“SQL 注入攻击”。

接下来我们打开数据库,然后在数据库上调用 Execute 方法,告诉它运行此 insert 查询。相应值会被替换并添加到数据库中。

我们在 db.Execute() 之后添加另外一行代码,将用户重定向回他们可以查看最喜爱的电影的网页,他们可以看到所添加的结果。

Response.Redirect("dataMovies.cshtml");

现在运行网页,您将看到建立的窗体。向其中添加一些数据:

 

单击“Add Movie”按钮,服务器会将数据添加到数据库中,然后将您重定向回列表中查看结果,您可以看到已经添加了新的最喜爱的电影!

 

重要提示:在本部分中,您看到了如何获取用户输入并将其直接添加到数据库中。在学习基础知识过程中这么做没有问题,但在您部署生产网站之前,必须记住执行以下操作

- 检查输入参数是否为有效数据,为用户提供关于他们输入错误的内容的准确反馈。例如,如果他们没有为“Year”输入良好的值,应该向他们通知这一点,而不是允许将任何信息提交到数据库中

- 在输入参数中检查可能被恶意攻击者用于损坏数据库的值。一种常见的攻击称为“SQL 注入”,其中用户在窗体中发送 SQL 命令,服务器上的代码执行该命令,这可能损坏或泄露私有数据。

可以在以下网站中了解在 WebMatrix 中使用数据库的更多信息: https://www.asp.net/webmatrix/tutorials/5-working-with-data

小结

您现在了解了如何向电影数据库中添加数据。创建了一个 HTML 窗体来处理用户输入,并了解了如何直接向数据库中添加值。然后您了解了在添加数据之后,如何自动将用户重定向回列表网页中,以便查看他们添加的数据。

在下一部分中将更进一步,添加功能来允许用户编辑他们已经拥有的数据。

举报

  • 相关推荐
  • 大家在看
  • 卢伟冰:REDMI K系列向上突破!Turbo系列承接K系列定位

    Redmi Turbo 4 Pro首销创2025年纪录,获全价位段销量冠军。卢伟冰表示该系列定位"性能小旋风",强化设计与质感。今年Turbo系列产品力强、性价比高,用户认可度高,销量持续创新高。随着小米高端化发展,K系列定位也将持续突破。去年Turbo系列独立,为K系列向上发展预留空间。预计年底Redmi K90系列将全面升级,Pro版可能配备超声波指纹和潜望长焦,首次采用长焦镜头,进一步缩小与小米数字旗舰的差距。K90系列或将推出标准版、Pro版和至尊版三款机型。

  • 打破不可能三角!孙宇晨“三驾马车”推进Web3合规与增长并举

    或许不再只是一个口号,而是一场真正照进现实的梦想。

  • WEEX全球大使招募计划启动:赋能创作者,共享Web3增长红利

    WEEX交易所推出全球大使招募计划,面向加密领域内容创作者、KOL及Web3用户开放合作。该计划以"长期共赢"为核心,通过阶梯式激励模型与独家资源支持,助力参与者实现影响力变现和品牌共建。权益包括:1)阶梯激励机制提供固定薪资和高比例返佣;2)独家流量扶持,优质内容可获得官方矩阵转发;3)优先参与新币空投和线下活动。计划旨在构建"用户即渠道"的分布式增长模型,通过本地化内容精准触达华语及东南亚市场。首期限150席位,申请截止2025年5月20日。

  • iQOO Z10 Turbo系列今天发:美女产品经理主讲

    快科技4月28日消息,iQOO Z10 Turbo系列将在今天19点亮相,本次发布会将由iQOO产品经理邢程主讲。官方介绍,iQOO Z10 Turbo系列全部标配旗舰级自研电竞芯片Q1,这是同档唯一双芯手机,带来真正的硬件级超分超帧,支持1.5K 144 FPS满格并发,玩游戏更爽,助你轻松超神。据悉,iQOO自研电竞芯片Q1率先实现游戏内超分和插帧并发,结合高效的芯片运算通路,iQOO Q1做到了流畅更细腻,视效满格,功耗更低。核心配置上,iQOO Z10 Turbo系列标准版搭载联发科天玑8400处理器,Pro版首批搭载高通骁龙8s Gen4处理器。其中骁龙8s Gen4处理器主要使用?

  • Adobe 发布 Firefly 系列产品,涵盖图片、视频、矢量等

    Firefly 通过在单一空间内提供图像、视频、音频和矢量生成功能,将为基于人工智能的创意制作体验带来革新……

  • 国补1529.15元起 iQOO Z10 Turbo发布:7620mAh系列最大电池 同档唯一旗舰双芯

    iQOO Z10 Turbo正式发布,主打超长续航和旗舰性能。配备7620mAh超大电池,支持90W快充,34分钟可充至60%。搭载天玑8400满血版处理器和自研电竞芯片Q1,安兔兔跑分190万+。采用6.78英寸AMOLED华星C9发光材料屏幕,支持144Hz刷新率和4320Hz超高频PWM调光。后置5000万像素索尼主摄+200万景深镜头,支持OIS+EIS双防抖。运行OriginOS 5系统,支持红外遥控、NFC和IP65防尘防水。售价1799元起,国补后1529.15元起。

  • iQOO Z10 Turbo系列官宣将于4月28日发布

    iQOO正式发布全新Z10 Turbo系列手机,包含标准版与Pro版,搭载天玑8400处理器,Pro版配备第四代骁龙8S芯片。新机在性能、续航及设计上均有显著提升,尤其标准版预计采用满血版8400处理器,带来更强体验。该系列通过vivo蓝绿合作与ARM深度协作,实现性能极致释放,在屏幕体验与稳定性上表现更加优异,适合日常使用或大型游戏,同时延续家族“万窗”设计理念。

  • Matrixport 获评 2025 年金融科技新加坡独角兽企业

    Fintech News Network发布2025亚洲独角兽榜单,涵盖新加坡、中国、印度等亚洲国家表现优异的金融科技企业。其中新加坡6家企业上榜……

  • 微软上线GPT-image-1模型 通过API向开发者开放使用

    OpenAI于4月24日发布全新图像生成模型GPT-image-1,通过API向全球开发者开放。该模型支持生成高质量图像,具备多级定制功能,包括控制敏感度、生成效率、背景、输出格式等参数,并推出"吉卜力模式"生成独特风格图像。Adobe、Figma等多家企业已将其集成到产品中。API定价按token计算,低质量图像生成成本约0.02美元/张。OpenAI CEO Sam Altman高度评价该模型,认为其为开发者带来更大创意空间。

  • 曝小米16系列支持UWB超宽带 并配备对称双扬声器

    ​近日,知名博主数码闲聊站暗示,小米16系列将在外围规格方面进行显著加强。据悉,该系列将配备对称双扬声器、UWB超宽带技术,同时标配3D超声波指纹和无线充功能,电池容量也将迎来大幅提升。

这篇文章对你有价值吗?

今日大家都在搜的词: