小编Chr*_*ris的帖子

无法在嵌入UpdatePanel的WebControl中获取ScriptManager.RegisterStartupScript

我有我认为应该是一个相当简单的问题,但对于我的生活,我看不出我的问题.问题与ScriptManager.RegisterStartupScript有关,这是我之前多次使用过的.

我的场景是我有一个插入页面的自定义Web控件.控件(以及一个或两个其他)嵌套在UpdatePanel中.它们被插入到PlaceHolder的页面上:

<asp:UpdatePanel ID="pnlAjax" runat="server">
  <ContentTemplate>
    <asp:PlaceHolder ID="placeholder" runat="server">
    </asp:PlaceHolder>
    ...

protected override void OnInit(EventArgs e){
  placeholder.Controls.Add(Factory.CreateControl());
  base.OnInit(e);
}
Run Code Online (Sandbox Code Playgroud)

这是页面上唯一的更新面板.

控件需要运行一些初始的javascript才能正常工作.控制电话:

ScriptManager.RegisterStartupScript(this, GetType(), 
                                    Guid.NewGuid().ToString(), script, true);
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

ScriptManager.RegisterStartupScript(Page, Page.GetType(), 
                                    Guid.NewGuid().ToString(), script, true);
Run Code Online (Sandbox Code Playgroud)

问题是脚本在首次显示页面时正确运行,但在部分回发后不会重新运行.我尝试过以下方法:

  1. 从CreateChildControls调用RegisterStartupScript
  2. 从OnLoad/OnPreRender调用RegisterStartupScript
  3. 对前两个参数使用不同的参数组合(在上面的例子中,Control是Page和Type是GetType(),但我尝试过使用控件本身等).
  4. 我尝试过使用持久性和新的ID(不是我认为这应该会产生重大影响).
  5. 我使用了一些断点,因此验证了正确调用了寄存器行.

我唯一没有尝试的是使用UpdatePanel本身作为控件和类型,因为我不相信控件应该知道更新面板(并且在任何情况下似乎都没有获得更新的好方法面板?).

任何人都可以看到我在上面做错了什么吗?

谢谢 :)


好吧,回答上面的查询 - 它看起来好像占位符以某种方式混淆了ScriptManager.RegisterStartupScript.

当我将控件拉出占位符并将其直接编码到页面上时,Register脚本正常工作(我也将控件本身用作参数).


ScriptManager.RegisterStartupScript(this, GetType(), Guid.NewGuid().ToString(), script, true);

任何人都可以解释为什么注入控件到PlaceHolder会阻止ScriptManager正确注册脚本?我猜这可能与动态控件的生命周期有关,但如果有一个正确的上述过程,我会欣赏(据我所知).

c# asp.net ajax updatepanel scriptmanager

33
推荐指数
3
解决办法
11万
查看次数

我可以使用nhibernate来判断属性是否脏了吗?

有没有人知道是否有可能使用NHibernate来判断对象上的特定属性是否脏(即属性与存储在DB上的属性不同)?

这个问题的背景是我将拥有一个具有(相对)大量属性的对象.我需要能够将一个参数(字符串)传递给一个函数,该函数将确定该特定属性是否在页面的生命周期内发生了变化.

如果我需要,我可以创建对象的副本,并在页面生命周期结束时使用反射来检查值,但我不愿意这样做.如果NHibernate可以简单地告诉我财产是否脏,那将是很好的.

谢谢

nhibernate

30
推荐指数
1
解决办法
9789
查看次数

自动部署混合SSIS/DLL解决方案

我们目前使用SSIS/C#开发了一个解决方案.SSIS包(以及其他内容)具有使用类库中开发的逻辑的脚本任务.此功能需要与SSIS包保持独立.

因为我们使用的是SSIS包,所以我知道编译后的DLL需要部署到GAC,然后从脚本任务中引用.但是,这会给我们带来部署问题.

我们的自动部署工具(正确)自动增加DLL的版本号,然后发布到GAC.但是这打破了SSIS包,因为它将尝试根据它们发布到开发机器GAC的版本号来访问DLL.

我们唯一的解决方案是获取已编译的DLL,手动修改SSIS包脚本任务,然后发布包.

似乎必须有更好的方法来做到这一点 - 有没有人遇到过这个问题并想出更好的解决方案?或者我们需要改变的方法是否存在根本性(除了消除对DLL的需求)?

谢谢!

deployment automation ssis

6
推荐指数
1
解决办法
1万
查看次数

以编程方式更改SharePoint中的目录名称是否可行?

要快速总结我的问题:

在SharePoint中以编程方式更改目录(包含文件和子文件夹)的名称是否可行?我希望用户至少在某些情况下会检查我正在尝试重命名的文件.

的背景:

我目前正在与一家生产基于Web的软件(ASP.NET)的公司签订合同,该公司具有可配置的文档管理系统.系统可以配置为使用不同的底层系统,最常见的环境是SharePoint(WSS 3).

我被分配了一个任务来扩展现在已经相当简单的系统(只需将文件输出到固定的目录结构中,偶尔读取).在我对最佳实践进行一些研究之前从未使用过SharePoint,并试图找出可行的方法.在这个阶段,我自己无法访问测试环境,因此仅限于在线阅读.

一个请求是使目录结构反映当前客户端的名称(作为一个示例) - 因此客户端的所有文档都在一个位置,并且可以通过SharePoint或其他兼容的应用程序从外部访问.该规范引用了如果客户端的名称发生更改,则目录结构应立即更新.我担心的是,这将直接导致错误(例如,权限被拒绝)或间接导致错误(外部检出文件的用户失去工作).

作为后续问题,如果对上述内容存在疑虑,是否有更好的方法来实施上述内容?我已经看过建议用户使用视图来访问SharePoint中的结构,但是我们的BA担心用户将无法直接将新文件上传到此结构中.

谢谢

sharepoint

5
推荐指数
1
解决办法
835
查看次数

SQL表 - 用于/或数据的模式

我有一个简单的问题 - 在SQL表设计中是否存在用于存储"或/或"数据的最佳实践?

我有以下问题 - 我需要在SQL表中存储模板数据(定义文件夹结构).任何给定文件夹可能具有静态名称(例如"电子邮件"),或者可能为每个实例动态生成,具体取决于与其关联的对象(例如,公司名称).

实例化业务对象时,模板数据将用于创建实际的文件夹结构.

我在考虑存储这样的数据:

CREATE TABLE folder
(
    ID INT IDENTITY PRIMARY KEY,
    FolderName NVARCHAR(50),
    IsDynamic BIT NOT NULL DEFAULT 0,
    DynamicFieldID INT FOREIGN KEY REFERENCES dynamicField,
    ParentID INT FOREIGN KEY REFERENCES folder
)

因此,如果IsDynamic字段设置为true,我知道将有一个规则(在外键上定义),但如果不是,我将使用存储在文件夹名称中的值.

然而,这对我来说似乎有点混乱 - 这种情况是否存在"最佳实践"模式?

sql t-sql database-design

2
推荐指数
2
解决办法
826
查看次数