首页 > 经验 > 关键词   >  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 窗体来处理用户输入,并了解了如何直接向数据库中添加值。然后您了解了在添加数据之后,如何自动将用户重定向回列表网页中,以便查看他们添加的数据。

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

举报

  • 相关推荐
  • 大家在看
  • WebLlama:基于Llama-3-8B的智能网页浏览代理

    WebLlama是一款基于Llama-3-8B模型的智能代理,它通过对话与用户互动,执行网页浏览相关的任务。这款工具能够处理连续的对话,理解并执行用户的指令,自动完成网上搜索、导航和信息检索等操作。随着技术的不断进步和优化,WebLlama有望在自动化网页浏览和信息收集方面发挥更大的作用。

  • Web3跨界合作新高度:TRON联手汉斯•季默共同打造主题曲

    4月16日,全球领先的去中心化平台TRON,宣布与享誉全球的作曲家汉斯·季默合作,共同推出Web3领域的里程碑式音乐作品——《创世纪歌:新纪元》。这首将在全球范围内发布的主题曲,不仅象征着TRON社区团结与进取的精神,更承载着全球用户对于未来数字世界的广阔期望。随着《创世纪歌:新纪元》的传播,TRON期待与全球伙伴和用户携手,开创数字经济发展的新纪元,共同书写人类社会新的篇章。

  • HTX迪拜之夜盛大举行:共筑开放、互联的Web3生态系统

    4月18日,由HTX、HTXDAO主办,去中心化AI云游戏协议DeepLink赞助的HTX迪拜之夜主题活动“领航者相聚,引领币圈新风向”在迪拜盛大举行。通过在全球第二大加密中心-迪拜的频繁亮相,HTX正积极塑造自己作为行业领导者的形象,并致力于推动整个加密货币行业的持续进步和繁荣。HTX将与更多业内佼佼者携手,共同探索创新途径和合作模式,以促进加密货币在全球层面的更广泛应用和认可,持续推动Web3生态系统的进一步发展和优化,为整个行业的繁荣贡献力量。

  • 谷歌推出首个Android 15 beta版:首批支持设备仅旗下Pixel系列

    2024年度I/O大会将于5月10日举行,目前距离大会召开还有大概一个月的时间,谷歌提前为我们带来了一份惊喜首个Android15beta版已经正式发布。首批尝鲜的幸运儿们将仅限于谷歌自家的Pixel系列产品其他OEM厂商则需要耐心等待至夏季,方有机会体验这一前沿测试版。除了Android15的惊艳亮相,我们还将迎来Pixel8a新机的首次公开亮相,以及GoogleTV和Chromecast产品的更新等。

  • Mixtral-8x22B官网体验入口 语言模型文本生成工具使用指南

    Mixtral-8x22B是一个预训练的生成式稀疏专家语言模型,由MistralAI团队开发。该模型拥有141B个参数,支持多种优化部署方式,旨在推进人工智能的开放发展。

  • Mamba 模型在视频理解任务中展现出强劲潜力 打败Transformer

    来自南京大学、上海人工智能实验室、复旦大学、浙江大学的研究队发布了一项关于视频理解的开创性工作。该研究全面审视了Mamba模型在建模中的多重角色,提出了针对14种模型/模块的VideoMambaSuite,并对其在12项视频理解任务中进行了深估。综合实验结果显示,Mamba模型在视频理解领域具潜在的优势和多样化的角色,为未来视频理解研究提供了有力的推动和参考价值。

  • 华为Pura 70系列来了!全系12GB内存起步 最高1TB存储

    今日,华为正式宣布,华为P系列全面升级为华为Pura系列,并官宣新机为华为Pura70系列。华为Pura70系列线下已经分货,共四款机型,分别为Pura70、Pura70Pro、Pura70Pro、Pura70Ultra。考虑到华为新品习惯在上午10:08、中午12:08、下午18:08开售,打算入手Pura70系列的用户可在这三个时段关注华为商城。

  • 第二代酷睿Ultra K系列改名了!有点看不懂

    目前看来,高性能的ArrowLake、低功耗的LunarLake,都会隶属于酷睿Ultra200系列,其中后者以V结尾,比如已经知道酷睿Ultra5234V,前者则延续惯例,桌面版上有K、KF、F、T、无后缀标准版系列,笔记本上有H、U系列。ArrowLake的桌面版K系列之前流传的命名是酷睿Ultra9290K、酷睿Ultra7270K、酷睿Ultra5260K,和多年来的编号一脉相承。只有酷睿Ultra3系列,可能桌面和笔记本都不会有。

  • 华为徐直军:期望Mate 70系列能带着纯血鸿蒙上市

    日前,第21届华为分析师大会在深圳举行,华为副董事长、轮值董事长徐直军透露,我们期望是在今年Mate70销售的时候,能够带着纯血鸿蒙上市,这也是我们努力的目标。”在大会上,徐直军还示,华为希望通过2024年一年的时间,先在中国市场把智能手机上使用超过99%时间的5000个应用全面迁移到鸿蒙原生操作系统上,真正实现操作系统和应用生态的统一。加速鸿蒙原生应用的开发是目前的重中之重。

  • 金融时报:TRON亮相哈佛大学并举办TRON Builder Tour活动

    推动区块链技术发展、培育由创新者和创造者构成的全球社区。

这篇文章对你有价值吗?

今日大家都在搜的词: