我正在使用ASP.NET WebForms(.NET 4.5),并具有“内容块”控件,该控件可在许多页面上重复使用。我尝试将控件甚至单个元素的ValidateRequestMode设置为“ Disabled”,但来自web.config的请求验证仍可防止输入不安全。
有办法解决还是我做错了什么?
例:
看起来很简单,但我无法弄清楚.我试过这段代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
foreach (ListItem item in CheckBoxListDivision.Items)
item.Selected = true;
}
}
Run Code Online (Sandbox Code Playgroud)
和这个标记:
<asp:CheckBoxList ID="CheckBoxListDivision" runat="server" DataSourceID="SqlDataSourceDivisions" DataTextField="Divisions" DataValueField="Divisions" RepeatColumns="4">
</asp:CheckBoxList>
<asp:SqlDataSource ID="SqlDataSourceDivisions" runat="server" ConnectionString="<%$ ConnectionStrings:WebPortal_Call4HealthReports_ConnectionString %>" SelectCommand="usp_HR_DivisionsSelectAll" SelectCommandType="StoredProcedure"></asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)
感谢您的时间和精力.
将安全逻辑分配给ASP.NET WebForms中的方法的最佳方法是什么?在什么地方可以使用方法属性,而不是在每个方法下都检查用户是否已登录?示例,而不是这样做:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (!UserLoggedIn)
{
Response.Redirect("/login");
}
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
我想做下面的事情。我已经在ASP.NET MVC应用程序中看到它完成了,但是我想知道是否可以使用Webforms实现它。另外,确保只有经过身份验证的用户可以继续并且其他人重定向到登录页面的最佳实践是什么?
例如:需要。其中Secure是方法属性:
[Secure]
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
我该如何创建这种方法属性?如果那不可能,那么您将如何推荐我呢?我在page_load或oninit上有许多需要此功能的用户控件,我正在寻找一种更好的方法来实现。
有没有办法runat从客户端JavaScript 设置属性?我需要在加载页面后向表中添加行,并且我需要将其单元格的数据提供给服务器.我可以创建第一行(几行)runat="server",但我不知道用户想要多少行,所以这不仅仅是添加一堆隐藏的行并在用户点击时显示它们改为"添加新行".
我可以想到几种方法来做到这一点:
每次用户点击"添加新行"按钮时回发到页面,并runat在服务器上处理属性而不是在JavaScript/jQuery中.我不想这样做,但因为它似乎是唯一可靠的方式,我可能不得不这样做.
runat="server"使用jQuery 添加到单元格,然后在下次回发时引用它们,但当前对它们不做任何操作.这对我来说是理想的解决方案,但我不确定ASP.NET是否以这种方式工作.考虑到WebForms是在JavaScript开发人员解决了我们可以在页面加载后向页面添加元素的想法之后创建的,我不会屏住呼吸.
给予table或可能tbody的runat属性,然后参照其子不知何故.这也比#1好,但我也不确定如何做到这一点,或者即使它确实可以做到.
这是我想要做的简化版本:
<table runat="server" id="this_table">
<tbody runat="server" id="this_table_body">
<tr>
<td class="this_table_cell">Some Content</td>
<td><button type="button" class="this_table_button">Please click this button</button>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
以及jQuery的简化版本:
$("#<%=this_table_body.ClientID%>").on("click", ".this_table_button", function() {
$("<%=this_table_body.ClientID%>").append("<tr>
<td class="this_table_cell">Some Content</td>
<td><button type="button" class="this_table_button">Please click this button</button>
</tr>
);
});
Run Code Online (Sandbox Code Playgroud) 这是一种方式,如果一个asp.net网络表格会话被droped被注意到(例如,客户端浏览器浏览器=超时)?
我们有一个临时用户购物卡会话:
HttpContext.Current.Session["UserShoppingCard"] = new UserShoppingCard();
Run Code Online (Sandbox Code Playgroud)
除了上面解释的功能外,每件事都很好.
谢谢!
这是我用来检查字符串匹配项的代码,但它不起作用
foreach(ListItem li in Checklistbox1.Items)
{
if(li.text == "John")
{
li.selected = true;
}
}
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个问题
我需要在服务器上发出的每个请求之前或之后运行的事件.
如果该事件存在,我需要在该事件上运行一些代码.
例如:某人键入http://www.website.com/some-link
我需要在应用程序处理之前检查此链接.
我正在使用C#网络表单.
到目前为止,我正在尝试在Global.asax.cs中查找事件,类似于
protected virtual void Application_BeginRequest(object sender, EventArgs e)
{
// need to track requested url
// code that needs to be run with requested url.
}
Run Code Online (Sandbox Code Playgroud)
这种情况有适当的解决方案吗?
TNX
我在Gridview中有一个单选按钮,当我们点击按钮时,我在代码隐藏文件(用户控件)中调用函数.在此之前我需要实现需要调用javascript函数来确认更改.我试过onclick,OnClientClick,OnSelect,但没有一个按预期工作.
<asp:RadioButton ID="ratiobuttonChoose" runat="server" AutoPostBack="true"
OnCheckedChanged="Selected"/>
Run Code Online (Sandbox Code Playgroud)
有人可以建议我怎么做这个.
我有两个版本的Web表单.原文,在VB中.而新的,在C#.它们本质上都是相同的,但语言是不同的,而C#版本在功能方面和可读性方面略有改进.每个.aspx页面本身的差异通过@Page标记上的autoeventwireup属性而有所不同.现在,当我尝试运行VB版本时,我得到了我正在寻找的结果.C#版本什么都不做.在每个页面的日志中,我看到VB版本正在从调用者那里获得一个POST,而C#版本正从调用者那里获得一个GET.因此,没有任何Request.Form值可用于C#版本.部署时的两个页面都由单独的Web应用程序调用.
VB Version page.aspx:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Custom Label Generator.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
page.aspx的C#版本
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Custom Label Generator.aspx.cs" Inherits="CustomLabelGenerator.Custom_Label_Generator" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Custom Label Generator</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
VB版代码隐藏:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load …Run Code Online (Sandbox Code Playgroud) 我正在使用asp.net c#webforms framework 4.5开发一个项目,并且我在Firebird数据库上进行了连接测试,但当我关闭此连接时它没有关闭,我使用以下代码来执行此操作:
string conDDNS;
FbConnection conexaoDDNS;
protected void Abrir_Fechar_Click(object sender, EventArgs e)
{
try
{
this.conDDNS = "DRIVER=InterBase/Firebird(r) driver;User=SYSDBA;Password=masterkey;Database=localhost:C:/AdCom/ADCOM.FDB";
this.conexaoDDNS = new FbConnection(conDDNS);
this.conexaoDDNS.Open();
ListItem item = new ListItem("Conexão aberta");
ListBox1.Items.Add(item);
this.conexaoDDNS.Dispose();
this.conexaoDDNS.Close();
ListItem item2 = new ListItem("Conexão fechada");
ListBox1.Items.Add(item2);
}
catch (Exception erro)
{
ListItem item = new ListItem(erro.ToString());
ListBox1.Items.Add(item);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经使用了.Close()和.Dispose()命令,但它没有用.
当我进行这个调试时,我意识到当它通过.Open()命令传递时它会打开连接,这没关系.但是当它通过.Close()命令时,连接仍然在数据库上打开.
要知道在数据库上打开的连接数,我使用以下命令:
select * FROM MON$ATTACHMENTS
Run Code Online (Sandbox Code Playgroud)