请求和请求的良好实践.窗体在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"]是"正确的"吗?我理解(请纠正如果错误),请求也将检查字段在查询字符串,而请求。表单将只检查表单的字段。
这可能会产生任何类型的错误/安全问题…请求的使用是好是坏?
如果您使用@Request[key]
请求一个值,那么框架将在以下步骤中搜索一个值(如果没有找到,则进入下一步):
-
Request.QueryString[key]
-
Request.Form[key]
-
Request.Cookies[key]
-
Request.ServerVariables[key]
但是我认为直接从你想要的收藏中获取你的价值是一个更好的选择。这对我们的应用程序的安全性更好,对维护也更好。
更新:我已经在我的博客上写了一篇关于这个的博文。
这两种方法都是正确的。表单或简单的请求从QueryString中提取值。您可能遇到的唯一问题是,如果查询字符串和表单字段具有相同的名称。在这两种情况下,您都应该已经在服务器上测试和验证数据,以处理任何错误。用户可以编辑请求。表单对象,然后将其传递到服务器,就像编辑查询字符串一样简单。至少你应该有:
<input type="text" name="coursename" value="@Server.UrlEncode(Request["coursename"])" />
ASP。Net MVC在将值映射到控制器中运行的操作的参数时默认使用Request方法。因此,微软使用Request["coursename"]似乎已经足够好了。