我想在ASP.NET转发器ItemDataBound事件中执行等效的Eval("field"),但我不确定将e.Item.DataItem转换为什么.数据源类型可能会有所不同,因为这是自定义控件中的可重用代码.那么如何通过字段名称(字符串)访问e.Item.DataItem中的字段?
理想情况下,我想做的事情如下:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
xxx item = (xxx)e.Item.DataItem;
string fieldValue = item("fieldname");
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个正则表达式,在ASP.NET页面路由中用于URL重写时可以正常使用.
但是,当我尝试在我的ASP.NET代码中的其他地方使用它时,它允许过去我不想要它的字符串.
我的正则表达式是,
[-_a-zA-Z0-9/]+(\.aspx(\?.+)?)?
Run Code Online (Sandbox Code Playgroud)
这意味着允许字符串文件/路径没有扩展名或.aspx文件扩展名,但不允许文件/路径与其他扩展名,例如."whatever.js".
我在我的应用程序的其他地方使用它没有成功,就像这样......
if (Regex.IsMatch(pageUrl, @"[-_a-zA-Z0-9/]+(\.aspx(\?.+)?)?"))
Run Code Online (Sandbox Code Playgroud)
似乎作为字符串匹配的一部分,它让它通过.但是如何确保整个字符串(pageUrl)匹配?