- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个自定义控件,我想在其中公开一个方法作为属性(例如,用于自定义验证);
public Func<bool> ValidateMatrixFunc { get; set; }
然后在包含此自定义控件的页面中,我可以使用委托(delegate)或 lambda exp 来分配页面的 OnPreInit 事件;
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
ucMatrixTable.ValidateMatrixFunc = ValidateMatrix;
}
这行得通。
但是,我认为在 aspx 中执行此操作会更方便,如:
<uc1:MatrixTable ID="ucMatrixTable" runat="server" ValidateMatrixFunc="ValidateMatrix" />
但这会崩溃并显示以下消息:
无法从其字符串表示形式“ValidateMatrix”中创建类型为“System.Func`1[[System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]”的对象“ValidateMatrixFunc”属性。
所以,我只是想知道……我想知道……是否有忍者知道这个问题的答案,或者这只是我们永远无法解开的生命之谜之一。
最佳答案
您可能希望将“ValidateMatrixFunc”属性公开为事件。为什么?它与控件的通常实现方式更加一致。此外,事件允许您为单个事件拥有多个订阅者(事件处理程序)。虽然这可能不是典型的用例,但有时确实会发生。
我在下面描述了如何将其实现为一个事件:
我们将该事件称为“ValidatingMatrix”。
然后您可以像这样编写 ASPX 标记:
<uc1:MatrixTable ID="ucMatrixTable" runat="server" OnValidatingMatrix="ValidateMatrix" />
此外,让我们使用 CancelEventHandler
委托(delegate)而不是 Func<bool>
.这意味着代码隐藏中的 ValidateMatrix 方法签名必须如下所示:
protected void ValidateMatrix(object sender, System.ComponentModel.CancelEventArgs e)
{
// perform validation logic
if (validationFailed)
{
e.Cancel = true;
}
}
在您的 MatrixTable 自定义控件中,实现如下内容:
const string ValidatingMatrixEventKey = "ValidatingMatrix";
public event System.ComponentModel.CancelEventHandler ValidatingMatrix
{
add { this.Events.AddHandler(ValidatingMatrixEventKey, value); }
remove { this.Events.RemoveHandler(ValidatingMatrixEventKey, value); }
}
protected bool OnValidatingMatrix()
{
var handler = this.Events[ValidatingMatrixEventKey] as System.ComponentModel.CancelEventHandler;
if (handler != null)
{
// prepare event args
var e = new System.ComponentModel.CancelEventArgs(false);
// call the event handlers (an event can have multiple event handlers)
handler(this, e);
// if any event handler changed the Cancel property to true, then validation failed (return false)
return !e.Cancel;
}
// there were no event handlers, so validation passes by default (return true)
return true;
}
private void MyLogic()
{
if (this.OnValidatingMatrix())
{
// validation passed
}
else
{
// validation failed
}
}
关于c# - 在 Aspx 中分配 C# Lambda Func,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7753059/
在 ASP.NET 编程的“代码隐藏”风格中,您将代码拆分为两个不同的文件:一个 .aspx 文件和一个 aspx.cs 文件。 (这适用于 C#;对于 VB,则为 aspx.vb。)每个人似乎都决定
在这个项目中你可以看到aspx文件下的aspx.designer.vb和aspx.vb 但是在我的项目中我没有它?? ,, 是什么赋予了?? 我可以通过右键单击然后单击查看代码来查看 vb 代码。 如
我将 my.aspx.cs 文件中的变量值传递到我的 .aspx 文件。当它在 aspx 中时,它的值会发生变化,然后需要返回到 .aspx.cs 文件。但是,它不允许我更改变量的值。有什么建议么?
我在 aspx 页面中使用多个 aspx 用户控件实例时遇到问题。当我尝试通过 Java 脚本获取用户控件元素值时会发生这种情况。 用户控制代码: function ucFun()
我有一个 asp.net 网站,我想知道是否可以将 .aspx 文件调用到另一个 .aspx 文件中。场景是我有 3 个左侧菜单,它们显示在各个页面上。 一开始我只有一个左侧菜单,因此将其添加到我的
我正在使用 C# 和 .NET ASP Web 应用程序开发我的第一个项目。我已成功连接到 SQL 数据库,但如何将输入从 .aspx(html 中)传递到 .aspx.cs(C# 中)? IE。(.
我已经阅读了很多关于同一问题的类似帖子,但这些修复对我不起作用。 我在页面代码的类区域中将变量声明为 Public,并在 Page_Load 子例程中为其分配一个值,但是当我在 javascript
在重命名不同的 ASPX 页面后,我曾多次遇到同样的问题,令我惊讶的是我在 stackoverflow 上找不到遇到同样问题的其他人。 当我运行我的 ASP.NET C# 项目时,调试器给我这样一条消
Select Zone East West North
这是我的 javascript 函数,其中值来自其他页面并且完美接收,但是如何在 cs 页面中检索“divConversation”值。这是我的代码 function myLoad() {
我不是编程新手,而是 Visual Studio、MVC、C#、ASP.NET 和 EXT.NET,即我尝试使用的所有工具的新手。 我正在尝试创建一个 Ext.Net 2.0 MVC4 项目,并获得了
我有一个 HTML 页面和一个 iframe(aspx 页面),如下所示。 Mypage.htm 此 Mypage.htm 将作为来自其他页面的链接提供,用户单击这些页面,Mypage.htm
我们最近设置了一个新的 SSRS 环境,报表的报表管理器 URL 现在为 Reports/Pages/Report.aspx 以前的环境是ReportList/Pages/ReportViewer.a
我正在尝试点击按钮,但我得到了 'ASP.views_home_index_aspx' does not contain a definition for'btnCreateOrder_Click'
我正在尝试将数据从 aspx.vb 页面传递到 aspx 页面。 在 aspx.vb 页面,我在 textbox 中放置了一个值(0 或 1),即 runat="server" 当加载 aspx 页面
我是 asp.net 的新手,正在处理一个有两个 .aspx 页面的问题集。 事件.aspx: 这是网站管理员在已经可用的面板(如事件标题、日期、信息等)的帮助下更新即将举行的事件和网络研讨会的地方。
这是我在 ASP.NET 中尝试执行的操作: 创建一个名为 Main.aspx 的页面。这个页面有一个 DIV 和一个按钮。 浏览器加载 Main.aspx。然后,当我单击该按钮时,我想将页面 Pag
我已经从一个不再可用的人那里继承了一个网站。在已部署的文件夹中,我有 Config.aspx(请参阅代码)。但是我找不到代码隐藏文件。配置页面有效。我在哪里可以找到 .cs 文件? 谢谢
我使用 iframe 来显示一个 aspx 页面,如下所示 this link 在 Displaypdf.aspx.cs 中,我正在显示一个 pdf,如下所示。我在
我的元素中有 2 个 aspx 文件。 first.aspx 页面上有一些内容,当我单击一个按钮时,它将在同一页面上启动一个框架(second.aspx 只有显示日历的代码)。 现在,一旦该日历 (s
我是一名优秀的程序员,十分优秀!