关于asp:Literal ID的值的问题请教

touch_hand 2009-09-23 10:18:30
在aspx文件中出现
<asp:Literal ID="MMData" runat="server"></asp:Literal>

这个句子中,MMData是一个变量还是一个字段?
为什么删除这个句子就报错呢?
...全文
506 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
touch_hand 2009-09-30
  • 打赏
  • 举报
回复
哦,就是尽量做到低耦合,是这个原因吧?
orain 2009-09-29
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 touch_hand 的回复:]
如果我就想删除这个东西,要怎么找出对应的引用的地方呢?一般在同一个文件吗
[/Quote]
不一定会在同一个文件,有时会在其它文件中使用 FindControl 或类似的方法查找这个控件并进行操作,呵呵,通常我觉得这样的设计或多或少都有些问题了。你可以按 Ctrl + F 来查找字符串 MMData,注意查询范围要选择“当前项目”或“整个方案”。
orain 2009-09-29
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 touch_hand 的回复:]
引用 13 楼 orain 的回复:
引用 12 楼 touch_hand 的回复:
如果我就想删除这个东西,要怎么找出对应的引用的地方呢?一般在同一个文件吗

不一定会在同一个文件,有时会在其它文件中使用 FindControl 或类似的方法查找这个控件并进行操作,呵呵,通常我觉得这样的设计或多或少都有些问题了。你可以按 Ctrl + F 来查找字符串 MMData,注意查询范围要选择“当前项目”或“整个方案”。


请问这样的设计会有什么方面的问题吗?
[/Quote]
破坏了对象的独立性以及增加了对象间的耦合,比如说你有一个用户控件,在用户控件中使用 FindControl 查找主页面上的控件,那么现在使用这个控件就多了一项要求,主页面必须有指定名称的控件,这个要求合理吗?做用户控件的目的是要把某一部分尽量独立开来,显然,因为这种方式的存在违背了当初的目的,同时控件和主页面也因此而紧密联结在一起。当然,在某些极端的情况下,这么做也无可厚非。

至于你上面的问题,你还是把 Debug 打开,具体跟踪一下问题出在哪儿吧,我觉得写程序还是要依靠调试的。
touch_hand 2009-09-29
  • 打赏
  • 举报
回复
用ctrl+F在整个文件夹里查找,但是找不到“CCGG”,显示错误信息是这样的:

[NullReferenceException: 未将对象引用设置到对象的实例。]
IndexPage._Default.CCGG(String cID) +959
IndexPage._Default.Page_Load(Object sender, EventArgs e) +298
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +33
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint
touch_hand 2009-09-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 orain 的回复:]
引用 12 楼 touch_hand 的回复:
如果我就想删除这个东西,要怎么找出对应的引用的地方呢?一般在同一个文件吗

不一定会在同一个文件,有时会在其它文件中使用 FindControl 或类似的方法查找这个控件并进行操作,呵呵,通常我觉得这样的设计或多或少都有些问题了。你可以按 Ctrl + F 来查找字符串 MMData,注意查询范围要选择“当前项目”或“整个方案”。
[/Quote]

请问这样的设计会有什么方面的问题吗?
flyerwing 2009-09-28
  • 打赏
  • 举报
回复
控件的页面唯一标识!
touch_hand 2009-09-28
  • 打赏
  • 举报
回复
那我能不能知道,哦到底在哪个文件哪个地方引用的这个东西?

touch_hand 2009-09-28
  • 打赏
  • 举报
回复
如果我就想删除这个东西,要怎么找出对应的引用的地方呢?一般在同一个文件吗
z415353144 2009-09-24
  • 打赏
  • 举报
回复
你肯定在后面的代码中用到了id为MMData"的服务器控件,可能是动态添加文本而不添加任何不属于该动态文本的元素
以下是摘抄:
ASP.NET Literal控件用法_华为金山网
在您要以编程方式设置文本而不添加额外的 HTML 标记时,可以向页面添加 Literal Web 服务器控件。在要向页面动态添加文本而不添加任何不属于该动态文本的元素时,Literal 控件非常有用。例如,您可以使用 Literal 控件来显示从文件或流中读取的 HTML。

注意
如果要显示静态文本,则可以使用 HTML 呈现它;不需要 Literal 控件。只有在需要以编程方式呈现文本时才使用 Literal 控件。


向 Web 窗体页添加 Literal 控件
将 <asp:Literal> 元素键入页面。

下面的示例显示一个简单页,该页在运行时显示标题新闻。该页的主体(包括 Literal 控件)类似于下面的代码:

<body>
<form runat="server">
<h1><asp:Literal runat=server /></h1>
</form>
</body>


或者,将 Mode 属性设置为 Transform、PassThrough 或 Encode。Mode 属性指定控件如何处理您添加到该控件中的标记。

将代码添加到页面上以在运行时设置控件的 Text 属性。

下面的示例演示如何以编程方式设置 Literal 控件的文本和编码。该页包含一组单选按钮,允许用户在编码文本和传递文本之间选择。

注意
如果您正将 Text 属性设置为来自不受信任源的文本,则应将控件的 Mode 属性设置为 Encode,这样标记才不会形成可执行标记。

<%@ Page Language="C#" %>

<script runat="server">
protected void Page_Load(object sender ,EventArgs e)
{
// Literal1.Text = "This <b>text</b> is inserted dynamically.";

Literal1.Text = "<script language='javascript'>alert('你中彩了!');<"+"/script>";
if(radioEncode.Checked == true)
{

Literal1.Mode = LiteralMode.Encode;
}
if(radioPassthrough.Checked == true)
{
Literal1.Mode = LiteralMode.PassThrough;
}
}
</script>

<html>
<head runat="server">
</head>
<body>
<form runat="server">
<div>
<br />
<asp:RadioButton runat="server" GroupName="LiteralMode" Checked="True"
Text="Encode" AutoPostBack="True" />
<br />
<asp:RadioButton runat="server" GroupName="LiteralMode" Text="PassThrough"
AutoPostBack="True" />
<br />
<br />
<asp:Literal runat="server"></asp:Literal> </div>
</form>
</body>
</html>

当你选择PassThrough时跳出窗体,选择Encode时原样输出

在页上显示静态内容并允许您以编程方式对其进行操作。

<asp:Literal
EnableTheming="True|False"
EnableViewState="True|False"

Mode="Transform|PassThrough|Encode"
event handler"
event handler"
event handler"
event handler"
event handler"
event handler"
runat="server"
SkinID="string"
Text="string"
Visible="True|False"
/>使用 Literal 控件在 Web 窗体页上显示静态文本。与 Label控件不同的是,Literal 不允许您向其内容应用样式。文本在 Literal 控件中显示之前并非 HTML 编码形式。这使得可以在文本中的 HTML 标记中嵌入脚本。如果控件的值是由用户输入的,请务必要对输入值进行验证以防止出现安全漏洞。 示例下面的示例演示如何使用 Literal 控件显示静态文本。<%@ Page Language="C#" AutoEventWireup="True" %>

<html>
<head>

<script runat="server">

void ButtonClick(Object sender, EventArgs e)
{
Literal1.Text="Welcome to ASP.NET!!";
}

</script>

</head>
<body>
<form runat="server">
<h3>Literal Example</h3>

<asp:Literal
Text="Hello World!!"
runat="server"/>

<br><br>

<asp:Button
Text="Change Literal Text"

runat="server"/>

</form>
</body>
</html>


引文来源 ASP.NET Literal控件用法_华为金山网
touch_hand 2009-09-23
  • 打赏
  • 举报
回复
在后缀为cs的文件里吗?
touch_hand 2009-09-23
  • 打赏
  • 举报
回复
报错内容:未将对象引用设置到对象的实例
皓月明 2009-09-23
  • 打赏
  • 举报
回复
你肯定在别的地方用到了,所以哈哈,就会报错在你删除了那个标签之后
  • 打赏
  • 举报
回复
应该是在你的控件所在的.aspx文件所对应的cs文件里,,报的是什么错呀??
touch_hand 2009-09-23
  • 打赏
  • 举报
回复
在这个文件中搜索不到这个MMData是不是可能在别的文件引用它的呀?
  • 打赏
  • 举报
回复
你在后台引用了这个控件,你删除它就找不到了,,当然会报错呀!~~
ldfqq 2009-09-23
  • 打赏
  • 举报
回复
MMData为控件Literal的ID,相当于变量名,
至于你删除这个句子就报错,一定是因为在程序中哪个地方使用了MMData造成的
PandaIT 2009-09-23
  • 打赏
  • 举报
回复
控件的名字!

你一定在其它的地方用到过它!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧