Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将参数从母版页传递到UserControl_C#_Asp.net_User Controls - Fatal编程技术网

C# 将参数从母版页传递到UserControl

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

请容忍我,第一次使用UserControls,这是我继承的一个大应用程序

我在母版页中有一个用户控件。这很有效。我需要重用它的99%,除非一个条件css类。我的想法是关闭ID并返回正确的类

.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" />

... 东西
这里发生了两件事

首先,在用户控件的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重新编译