请求和请求的良好实践.窗体在asp.net网页中的应用

本文关键字:请求 asp net 应用 网页 求和 窗体 | 更新日期: 2023-09-27 17:50:20

我正在阅读一些关于asp.net网页2的教程,我发现一些令人困惑的东西

本页:http://www.asp.net/web-pages/tutorials/working-with-pages/validating-user-input-in-aspnet-web-pages-sites以下代码:

<form method="post">
    @Html.ValidationSummary()
    <div>
        <label for="coursename">Course name: </label>
        <input type="text" name="coursename" value="@Request["coursename"]" />
        @Html.ValidationMessage("coursename")
   </div>
...

在这种情况下使用Request["fieldname"]而不是Request. form ["fieldname"]是"正确的"吗?我理解(请纠正如果错误),请求也将检查字段在查询字符串,而请求。表单将只检查表单的字段。

这可能会产生任何类型的错误/安全问题…请求的使用是好是坏?

请求和请求的良好实践.窗体在asp.net网页中的应用

如果您使用@Request[key]请求一个值,那么框架将在以下步骤中搜索一个值(如果没有找到,则进入下一步):

  1. Request.QueryString[key]
  2. Request.Form[key]
  3. Request.Cookies[key]
  4. Request.ServerVariables[key]

但是我认为直接从你想要的收藏中获取你的价值是一个更好的选择。这对我们的应用程序的安全性更好,对维护也更好。

更新:我已经在我的博客上写了一篇关于这个的博文。

这两种方法都是正确的。表单或简单的请求从QueryString中提取值。您可能遇到的唯一问题是,如果查询字符串和表单字段具有相同的名称。在这两种情况下,您都应该已经在服务器上测试和验证数据,以处理任何错误。用户可以编辑请求。表单对象,然后将其传递到服务器,就像编辑查询字符串一样简单。至少你应该有:

<input type="text" name="coursename" value="@Server.UrlEncode(Request["coursename"])" />

ASP。Net MVC在将值映射到控制器中运行的操作的参数时默认使用Request方法。因此,微软使用Request["coursename"]似乎已经足够好了。