我有一个登录页面,用户输入用户名(文本框),密码(文本框)和位置(下拉列表)然后登录。
在服务器页面上,对于位置dropdonwlist,我有一个连接字符串来访问SQL Server数据库以从位置表获取所有位置并将数据绑定到下拉列表。
对于dropdownlist.SelectedItem,我想要做的是,一旦用户输入Username,onChange,在用户单击Login之前,特定用户的默认位置应该是所选位置。此默认位置由Login表中的locationID(FK)定义,该表具有loginId,username,password和locationID作为其列。我希望在服务器端检索locationID(访问数据库表)的过程,然后将locationID传递给客户端,我可以调用函数来根据locationID选择默认的下拉列表项。有什么办法实现这个?感谢
编程语言C# 数据库SQL Server 2005
答案 0 :(得分:2)
有两种方法可以完成这项工作:AJAX或Postback。 AJAX将是更好的方式,回发将是更容易的方式,它取决于你真的......
两种方式都会使用用户名并对数据库运行查询以获取locationid,然后从下拉列表中选择它。
然而,逻辑上这可能是一个安全漏洞(除非在内部运行)黑客可以生成随机用户名并查看他们是否返回有效位置,因为不需要密码。这让我质疑为什么你需要选择一个位置,如果它已经在数据库中?您可以在验证用户时选择它......
答案 1 :(得分:0)
我可能会使用jQuery,其方法是由onBlur为用户名框触发。此方法将在页面上调用AJAX方法以从数据库中获取默认位置ID。
根据您运行的.NET版本,您可以使用AjaxPro或ASP.NET AJAX Toolkit来公开公共方法。 (我发现AjaxPro更容易使用)。
然后这只是编写jQuery的问题:
(非常粗略的代码,我可能有很多错误。如果你用Ajax Toolkit公开方法)
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,您可以调用它来获取结果。
答案 2 :(得分:0)
哪个更贴近“位置”:用户还是计算机?
如果选择 计算机 的默认位置,而不是 用户 , 您可以考虑使用cookie来存储默认位置。一些优点:
实施起来会有一些警告: