我有一个登录页面,用户输入用户名(文本框),密码(文本框)和位置(下拉列表),然后登录。
在服务器页面上,对于location dropdonwlist,我有一个连接字符串来访问SQL server数据库,以便从location表中获取所有位置,并将数据绑定到dropdownlist。
对于dropdownlist.SelectedItem,我想要做的是,一旦用户输入Username,onChange,特定用户的默认位置应该是用户单击登录之前选择的位置。此默认位置由登录表中的locationID(FK)定义,该表的列包括loginId、用户名、密码和locationID。我希望检索locationID (访问DB表)的过程发生在服务器端,然后将locationID传递给客户端,在那里我可以调用一个函数来根据locationID选择默认的dropdownlist项。实现这一目标的方法是什么?谢谢
编程语言C#数据库SQL Server2005
发布于 2009-12-30 16:40:41
有两种方法可以做到这一点: AJAX或Postback。AJAX是更好的方式,回发是更简单的方式,这真的取决于你……
这两种方法都将获取用户名并对数据库运行查询,以获得locationid,然后从下拉列表中选择它。
然而,从逻辑上讲,这可能是一个安全漏洞(除非在内部运行),黑客可以生成随机用户名,并查看它们是否返回有效的位置,因为不需要密码棒。这让我不禁要问,既然已经在数据库中了,为什么还要选择一个位置呢?您可以在验证用户时选择它...
发布于 2009-12-30 16:37:15
我可能会使用jQuery,其方法由用户名框的onBlur触发。此方法将调用页面上的AJAX方法,以从数据库中获取默认位置ID。
根据您运行的.NET的版本,您可以使用AjaxPro或ASP.NET AJAX Toolkit来公开公共方法。(我发现AjaxPro更容易使用)。
然后就只需要编写jQuery了:
(这里的代码非常粗糙,我可能弄错了很多东西。如果您使用Ajax工具包公开该方法)
function doSomething()
{
var username = $.("#textbox").val();
$.ajax({
type: "POST",
url: "default.aspx",
data: "username=" + username,
success: function(result){
// Select the proper option here based on the result
$.("#dropdown").val(result);
}
});
}
AjaxPro稍有不同,因为它会生成页面JavaScript,您可以调用该页面来获取结果。
发布于 2009-12-30 17:19:29
哪个与“位置”更紧密地联系在一起:用户还是计算机?
如果为计算机而不是用户选择默认位置是合适的,您可以考虑使用cookie来存储默认位置。一些优势:
它相对容易实现,但有一些注意事项:
https://stackoverflow.com/questions/1981070
复制相似问题