1

助けが必要!これが機能しない理由を回避できません。

ページ:

<asp:SqlDataSource ID="SelectUserInfo" runat="server" ConnectionString="<%$ ConnectionStrings:TradeRelay %>" SelectCommand="admin_userinfo" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter Name="suser" Type="String" DefaultValue="Anonymous" />
</SelectParameters>
</asp:SqlDataSource>

分離コード:

protected void Page_Init(object sender, EventArgs e)
{
    SelectUserInfo.SelectParameters["suser"].DefaultValue = User.Identity.Name;
}

エラー:

ControlParameter 'suser' にコントロール 'suserParam' が見つかりませんでした

更新:

ControlID="suserParam"

間違っていました!ありがとう!

4

3 に答える 3

2

コントロールを追加してそれにHiddenfield割り当てることをお勧めします。次に、コントロールからパラメーター値を取得します。User.Identity.NameSelectUserInfoHiddenfield

ちなみに、あなたのコードでは、名前の付いたコントロールが見つかりませんでしたsuserParam

<asp:HiddenField runat="server" ID="suserParam"/>
<asp:SqlDataSource ID="SelectUserInfo" runat="server" ConnectionString="<%$ ConnectionStrings:TradeRelay %>" SelectCommand="admin_userinfo" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter ControlID="suserParam" Name="suser" Type="String" DefaultValue="Anonymous" />
</SelectParameters>
</asp:SqlDataSource>

これは背後にあるコードです

protected void Page_Load(object sender, EventArgs e)
{
    suserParam.value = User.Identity.Name;
}
于 2013-01-08T06:25:24.777 に答える
2

ControlParameterページに存在するコントロールからパラメータ値を抽出するものを使用しています。したがって、この場合、id を使用してコントロールを見つけようとしていますがsuserParam、見つからないためエラーが発生します。

asp:ParameterControlParameter の代わりにプレーン パラメーター ( ) を使用してみてください。さらに別の方法はSessionParameter、独自のカスタム パラメーターを使用または記述することです (この SO の質問を参照してください:コード ビハインドなしで SqlParameter で ASP.NET の現在のユーザー名を利用する方法)

于 2013-01-08T06:29:13.633 に答える
-1

標準パラメータとして直接含めることができます。

<asp:Parameter Name="suserParam" Type="String" DefaultValue="<%=User.Identity.Name %>" />
于 2016-09-09T13:22:39.263 に答える