asp.net sql 语句 自动生成 如何实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net sql 语句 自动生成 如何实现相关的知识,希望对你有一定的参考价值。

参考技术A 你所说的自动生成是指什么?是不是指根据方框内容生成?
string
str="select
"+textBox1.Text+"
from
"+textBox2.Text
+"
where
"+textBox3.Text+"=."+textBox1.Text+"'";
这里sql语句是根据文本框的内容生成的
textBox1.Text是表名,textBox2.Text是表名,textBox3.Text是条件列名,textBox4.Text是条件,你想怎么变都可以,很灵活

ASP.NET 网站项目从开始(构建)到结束(运行时)如何实现自动生成的 ASP 命名空间?

【中文标题】ASP.NET 网站项目从开始(构建)到结束(运行时)如何实现自动生成的 ASP 命名空间?【英文标题】:How is the auto-generated ASP namespace realized for an ASP.NET website project, from start (build) to finish (runtime)? 【发布时间】:2011-10-24 12:36:38 【问题描述】:

“ASP”命名空间似乎是一个生成的,因为它没有在网站项目的源代码中使用,任何地方(或至少没有被网站程序员明确使用)。 我想知道它是如何完全实现的。

例如: MSBuild 是否有责任推动 ASP 命名空间的创建? 如果是这样,该指令在哪里找到?一世 知道 C# 编译器不会从任何东西中创建命名空间 它自己的意志,因此必须将 ASP 命名空间输入其中, 即使网站程序员不使用。也许是 由不同的工具生成到源代码中。这 “临时 ASP.NET 文件”文件夹可能与它有关。正如你 可以看到,我想要所有血淋淋的细节以便解锁和理解 那个命名空间...

Visual Studio 似乎有允许使用 ASP 命名空间的工具(对它的 IntelliSense 支持),但这掩盖了我对它的理解。

网站中的“ASP”命名空间从头到尾是如何实现的?

(我还没有找到解释这一切的好文章。)


这里的 ASP 命名空间显示在 .NET Reflector 中。 (本图取自Rick Strahl's blog)

【问题讨论】:

“ASP 命名空间”是什么意思?您是指 HTML 设计器的源视图中用于 Web 控件的前缀吗? @Rick - 是的,我相信它与编译后的 IL 中看到的相同,如 .NET Reflector west-wind.com/weblog/images/11/o_PageInheritance.png的截图所示 【参考方案1】:

ASP. 命名空间可用于动态加载自定义控件,使强制转换工作更安全。

您可以控制自定义控件在 ASP 中可以采用的名称。命名空间通过将ClassName="ControlClass" 放在命名空间的声明上,动态控件现在将引用ASP.ControlClass,以便在您使用LoadControl 时进行安全转换

您可以阅读 MSDN http://msdn.microsoft.com/en-us/library/c0az2h86(v=vs.100).aspx 上的完整步骤

当你不使用 ASP 时。命名空间并离开控件采用自动名称,则案例可能会失败(我不知道为什么,但它有时会在我的服务器上失败)创建的引用是

namespace ASP

    [CompilerGlobalScope]
    public class Control_Class_nameByDirectory : ControlClass
    
        [DebuggerNonUserCode]
        public ControlClass();

        protected override bool SupportAutoEvents  get; 

        [DebuggerNonUserCode]
        protected override void FrameworkInitialize();
    

当您尝试制作像(ControlClass)LoadControl("~/module/Control.ascs") 这样的演员时,它可能会失败,因为将其识别为Control_Class_nameByDirectory 而不是ControlClass

现在,如果您按照 MSD 的说明在控件标题上声明 ClassName,结果是控件将获得与您定义的 ClassName 相同的 ClassName:

namespace ASP

    [CompilerGlobalScope]
    public class ControlClass : global::ControlClass
    
        [DebuggerNonUserCode]
        public ControlClass();

        protected override bool SupportAutoEvents  get; 

        [DebuggerNonUserCode]
        protected override void FrameworkInitialize();
    

在这里,您可以使用ASP.ControlClass 来投射控件,而无需担心如果失败。

因此,按照http://msdn.microsoft.com/en-us/library/c0az2h86(v=vs.100).aspx 此处描述的步骤操作,您可以避免此类问题。 (而且我已经面对他们)

在不参考 ASP 的情况下无法对自定义控件进行大小写的问题。在 Dot net 4.0 和 4.5 版本中都可以看到命名空间。最糟糕的是,这是一个随机失败 - 这意味着有时会发生,有时不会,我无法找到原因。

【讨论】:

【参考方案2】:

此命名空间用于 ASP.NET 通过解析 .aspx 和 .ascx 文件生成的代码。

不过,我不知道你为什么在乎。它只是一个命名空间。它没有什么“特别”之处,您不应该引用该命名空间中的任何内容。


要了解所有这些工作原理,请阅读“ASP.NET Life Cycle”。

【讨论】:

John,它源于持续集成系统的问题。但是总的来说,即使从学术角度来看,我认为这是一个有效的问题,所以我很在意。不过,您是对的,作为开发人员,可能不需要关心。即使出于好奇,我也希望其他人在访问此问题时也能理解。 您知道它是如何从 aspx 和 ascx 文件中的解析信息中获取到最终编译的 DLL 的吗?我希望能解释它所经历的阶段和事情。 是的,我愿意。它被称为ASP.NET Life Cycle。请说明为什么您的 CI 系统需要知道这一点。我使用 TFS 对 Web 应用程序进行 CI,但不知道为什么任何代码都会关心它。特别是,我不知道微软已经保证他们如何生成他们的代码,所以问问你自己,如果命名空间的名称每天都改变,只是为了惹你生气,会发生什么? 顺便说一句,如果你问是因为你试图设置 CI 以使用 ASP.NET 网站(文件->新网站),那么我的回答是,“这是为什么不将 ASP.NET 网站用于严肃的工作”。相反,使用 File->New Project 创建一个 Web 应用程序项目(继续)。 John,我不想将 CI 问题与这个问题混为一谈。今天早些时候有人告诉我,一位开发人员发布了 CI 问题以支持,他可能对 SO 提出了一个明确的问题。 CI 问题是让我意识到我不理解这个命名空间的催化剂。我认为有一个可靠的答案是值得的,因为其他人对此有疑问,我想不出比 *** 更好的地方来寻求答案。在互联网上搜索后,我遇到了类似的问题,但没有任何可靠的。最终我会给它分配一个赏金,但我相信 SO 会占上风【参考方案3】:

我假设您正在寻找服务器控制标签上的前缀...如果不是这样,请告诉我。

前缀在 configuration/system.Web/pages/controls 下的 web.config 文件中注册。您可以根据需要对其进行修改,或者为您自己的控件库注册额外的前缀。

此处为 MSDN 信息:http://msdn.microsoft.com/en-us/library/ms164640.aspx

【讨论】:

我没有看到一个桥,在这个最初的答案中 - 如果那是 ASP 命名空间的来源,那么它是如何将它变成一个已编译的 DLL 的,还是它? @John - 不,我以为你说的不是这个。我以前没见过,但我承认我最近没有用 Reflector 来研究 Web 项目。 :-) 我会看看我是否在其他网络应用程序中看到相同的东西。

以上是关于asp.net sql 语句 自动生成 如何实现的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 将后台循环语句查询的结果输出到前台table

asp.net 如何一次执行多条件Sql语句,如何解决?

asp.NET分页如何实现?

如何用SQL语句将数据批量插入数据库

如何使用 C#、ASP.NET、SQL Server 端处理实现 jQuery DataTables 插件?

ASP中 devexpress 的gridview如何让数据加载时就排序