目前该网页中还没有太多内容。下一步将向其中添加内容。
作为附加练习,您可能注意到“Add a New Movie to the Database”文本与剩余部分具有不同的样式。它是一个 <h1>,但它设置样式的方式与页眉 h1 并不相同。我们看看能不能修复这一问题。(提示,页眉 h1 被视为 <header> 标记的子标记,但它不是。需要向 CSS 文件中添加什么内容才能以相同方式设置样式?)
创建添加电影表格
通常,当使用 HTTP 时,您的浏览器会使用 HTTP 协议中的 GET 谓词向服务器发出请求,从名称可以看出,该谓词从服务器获取信息。您一直都是这么做的,但可能还没认识到这一点,因为使用 GET 是浏览器请求网页的一种隐含方式。HTTP 协议还支持一个名为 POST 的变量,它可用于向服务器发送回信息。
可以看到,拥有动态的应用程序非常好,但下一个逻辑问题是:向服务器发送数据,让服务器对数据执行某项操作,然后返回结果,这有多难?我相信您已见过数百个这样的网站:您键入一些信息,按下提交按钮将该信息发送给服务器。
这类应用程序使用了 HTML 窗体。当单击“提交”时,浏览器使用 POST 谓词将窗体字段中的信息发送到服务器。再一次说明,所有这些操作都是在幕后完成的,您无需执行任何专门的操作来使用它,但让您服务器端的代码知道请求使用了什么样的谓词很有用,这样服务器就可以相应地做出响应。您将了解如何实现此目的,以便将电影添加到数据库。
我们首先从一个非常简单的窗体开始。它不是很美观,但能够顺利完成任务。
1: <h1>Add a New Movie to the Database</h1> 2: <form action="" method="post"> 3: <p>Name:<input type="text" name="formName" /></p> 4: <p>Genre:<input type="text" name="formGenre" /></p> 5: <p>Year:<input type="text" name="formYear" /></p> 6: <p><input type="submit" value="Add Movie" /></p> 7: </form> |
这是它的外观。就像我说的,它不是很美观,但稍后我们将创建一些 CSS 来使它更加漂亮。
现在让我们看一下刚才编写来创建此窗体的 HTML。
<form action=“” method=“post”>
第一个新内容是 <form》>标记。该标记定义一个窗体,告诉服务器用户何时按下 《submit》 按钮,窗体中必须显示哪些内容,它所执行的操作将是 HTTP POST。由于 action 参数是空的,所以该网页(也即 AddMove.cshtml)将处理来自窗体的 post。
以下为引用的内容: <p>Name:<input type="text" name="formName" /></p> <p>Genre:<input type="text" name="formGenre" /></p> <p>Year:<input type="text" name="formYear" /></p> |
在 <form> 标记中,您将看到有 3 个 <input> 控件。它们使用 HTML <input> 控件,该控件可以有许多类型设置,在本例中类型为“text”,这会提供一个基本的文本框,用户可以用于输入文本。每个文本框都有一个名称,该名称是一个变量,服务器将使用它存储用户在提交之前输入到文本框中的值。
<p><input type="submit" value="Add Movie" /></p> |
最后,我们有一个类型为“submit”的 <input> 控件,它定义提交按钮。当用户按下此按钮时,将调用 HTTP POST 操作,用户输入的数据将发送到服务器。
现在如果您按下该按钮,不会发生任何事情。这是因为您还未编写代码来处理来自服务器的回发。接下来将完成此任务。
处理来自窗体的数据
在创建该窗体时,您将 action 参数保留为空,这表明您指定了此网页应该接受窗体提交。
为此,您可以更新“AddMovie.cshtml”网页,添加一些在加载网页时将执行的代码。为此,在网页顶部添加一个代码块,如下所示:
以下为引用的内容: 1: @{ 2: // Code to execute 3: } 4: 5: <h1>Add a New Movie to the Database</h1> 6: <form action="" method="post"> 7: <p>Name:<input type="text" name="formName" /></p> 8: <p>Genre:<input type="text" name="formGenre" /></p> 9: <p>Year:<input type="text" name="formYear" /></p> 10: <p><input type="submit" value="Add Movie" /></p> 11: </form> |
之前您已看到第一次调用网页时,实现方式是在浏览器中键入它的地址(或单击 Run 来启动该文件),您的浏览器使用 HTTP GET 谓词请求网页。随后,当按下 Submit 按钮时,由于 action 属性是空的,所以 HTTP POST 操作调用了相同网页。
(举报)