C# 将参数从母版页传递到UserControl
请容忍我,第一次使用UserControls,这是我继承的一个大应用程序 我在母版页中有一个用户控件。这很有效。我需要重用它的99%,除非一个条件css类。我的想法是关闭ID并返回正确的类 .ascx:C# 将参数从母版页传递到UserControl,c#,asp.net,user-controls,C#,Asp.net,User Controls,请容忍我,第一次使用UserControls,这是我继承的一个大应用程序 我在母版页中有一个用户控件。这很有效。我需要重用它的99%,除非一个条件css类。我的想法是关闭ID并返回正确的类 .ascx: <div class="<%= GetMyClass() %>">Changes colors!</div> <div class="<%= MyClass %>">Changes colors!</div> .mast
<div class="<%= GetMyClass() %>">Changes colors!</div>
<div class="<%= MyClass %>">Changes colors!</div>
.master:
<slc:MyUsercontrol runat="server" ID="FirstId" />
... stuff
<slc:MyUsercontrol runat="server" ID="SecondId" />
<slc:MyUsercontrol runat="server" ID="FirstId" MyClass="first-class" />
<slc:MyUsercontrol runat="server" ID="SecondId" MyClass="second-class" />
... 东西
这里发生了两件事
首先,在用户控件的codebehind中有一个断点,它只会中断一次,我希望它会中断两次
其次,codebehind中可用的ID
不是传递到页面的“ID”。如果我将“FirstId”更改为“slamamadingdong”,那么当代码到达断点时,代码中的值仍然是“FirstId”
注意,“FirstId”是在我继承项目时设置的,我添加了带有“SecondId”的标记,所以我假设这个值实际上是在其他地方完全设置的,当我们到达codebehind时,标记值是无关的
我是不是完全偏离了我的目标 要将参数传递到UserControl,而不是依赖
ID
为UserControl公开一个新属性,如下所示:
.ascx.cx:
public string GetMyClass(){
if (ID == "FirstId"){
return "first-class";
}
if (ID == "SecondId"){
return "second-class";
}
return "";
}
public string MyClass { get; set; }
.ascx:
<div class="<%= GetMyClass() %>">Changes colors!</div>
<div class="<%= MyClass %>">Changes colors!</div>
改变颜色!
.master:
<slc:MyUsercontrol runat="server" ID="FirstId" />
... stuff
<slc:MyUsercontrol runat="server" ID="SecondId" />
<slc:MyUsercontrol runat="server" ID="FirstId" MyClass="first-class" />
<slc:MyUsercontrol runat="server" ID="SecondId" MyClass="second-class" />
这是一种更通用的方法,因为您可以简单地添加其他具有自己行为的
MyUsercontrol
元素,而无需更改MyUsercontrol
的逻辑。同时,将UserControl逻辑与其父级的ID
耦合也不是一个好主意。您是重新编译项目还是在进行更改后在浏览器中重新加载页面?@Maxx重新编译