[英]Swap Master Page used in View from a value selected in a DropDownList
[英]Set DropDownList selected value on master page from child page
尝试类似的东西
public string MyText { get {return lbl.Text;} set {lbl.Text = value;}}
取自这个问题以异常结束:
public string change_ddlArea { get { return ddlArea.SelectedItem.Text; } set { ddlArea.Items.FindByValue(value).Selected = true; } }
--> Object 引用未设置为 object 的实例。
使用这些通常会导致相同的错误:
this.ddlEnergyType.Items.FindByValue(resourceTypeVal).Selected = true;
((DropDownList)Master.FindControl("ddlArea")).Items.FindByValue("all").Selected = true;
我很难在谷歌上找到这个问题的答案。 它应该可以工作,如果 label 操作确实如此,那么移动到 ddl 也可以吗?
可能是问题的一个区别是尝试调用它时..(在第二个代码块中)我使用
Master.change_ddlArea = sendoff_area;
在上述链接中,它是这样完成的
((MasterPageTypeName)Page.MasterPage ).MyText = "test";
//so mine would look like this:
((GAWMaster)_default.Master).change_ddlArea = "all";
但是智能感知缺少“.Master” - 将其放入会导致信息出现:非静态字段、方法或属性需要 object 引用....
tl,博士:暂停
至少可以说,您的问题非常令人困惑。 做你的标题要求的事情非常简单:
首先在你的MasterPage
代码后面做:
public string change_ddlArea
{
get { return ddlArea.SelectedItem.Value; }
set { ddlArea.Items.FindByValue(value).Selected = true; }
}
然后在您的子页面中定义您的MasterPage
类型,以便它可以“看到” MasterPage
的change_ddlArea
属性。 有关更多参考信息,请参见此处。
<%@ MasterType virtualPath="~/MasterPage.master"%>
然后在您的子页面上的代码中,您应该能够:
Master.change_ddlArea(someValue);
您设置的值必须存在,否则您将收到 object 参考错误。 确保您的DropDownList
已正确加载,并且您的操作没有乱序。 此外,如果您不使用ViewState
并执行PostBack
,请确保在设置值之前已重建DropDownList
。
.NET 中的母版页只是 class,对吧? 让我们以这种方式来看看它。 您的页面使用该母版页。 但这意味着您的页面具有该母版页,而不是该母版页。 因此,理论上您应该能够从您的页面中获得对该母版页的引用。 让我们用其他词来更清楚地说明:
// This is like the master page
public class Hand
{
}
// This is like the page. Please notice that a human **has** hands, but a human **is** not hand.
public class Human
{
Hand leftHand = new Handl();
}
现在,想想。 是否可以通过人类 class 的实例接触手指? 你看到这里的逻辑了吗? 当然,您可以参考 Hand class,然后您可以参考手指:
Human jack = new Human();
jack.Hand.Fingers["SmallFinger"].Cut();
现在,如果您的手是一种特殊类型的手(其中包含 label 的特殊母版页?)。 你只需要一个演员表
((ExpensiveHand)jack.Hand).Rings.Steal();
这就是页面和母版页之间的逻辑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.