C# 如何在一行代码上强制转换和使用对象?

C# 如何在一行代码上强制转换和使用对象?,c#,asp.net,.net,casting,C#,Asp.net,.net,Casting,我正在尝试从网络控件访问父页面上的隐藏字段。下面的工作,但我想在一行它 HiddenField hiddenFieldPid = (HiddenField)this.Parent.FindControl("HiddenFieldPid"); hiddenFieldPid.Value = ListBox_JobPositions.SelectedValue; 我不太清楚这为什么不起作用,但我在执行此操作时,没有在intellisense中显示Value属性: (HiddenField)this.

我正在尝试从网络控件访问父页面上的隐藏字段。下面的工作,但我想在一行它

HiddenField hiddenFieldPid = (HiddenField)this.Parent.FindControl("HiddenFieldPid");
hiddenFieldPid.Value = ListBox_JobPositions.SelectedValue;
我不太清楚这为什么不起作用,但我在执行此操作时,没有在intellisense中显示Value属性:

(HiddenField)this.Parent.FindControl("HiddenFieldPid").NOOPTIONFORVALUEHERE = ListBox_JobPositions.SelectedValue;
你很接近:

((HiddenField)this.Parent.FindControl("HiddenFieldPid")).Value = ListBox_JobPositions.SelectedValue;

本质上,FindControl方法返回需要强制转换的对象。

必须添加括号才能使强制转换在正确的位置工作:

((HiddenField)this.Parent.FindControl("HiddenFieldPid"))
                         .Value = ListBox_JobPositions.SelectedValue;

但是,请注意,在一行中执行此操作会导致出现一些难以诊断的可能异常

我不完全确定你用这个答案想要达到什么目的。看起来你所做的只是重述OP的原始代码。你是带着这个去了什么地方,还是干脆把答案删掉?
((HiddenField)this.Parent.FindControl("HiddenFieldPid")).value=ListBox_JobPositions.SelectedValue.toString();