私はASP.netを初めて使用しており、更新するアプリケーションを継承しています。私は非常にうまくいくつもりですが、私は理解の助けが必要です。Asp.Net WebForms - ViewDataをユーザーコントロールにパラメータとして渡す方法
私はいくつかの引数を取り、ユーザーコントロールuc:speciesgrid
を持っている:applicationId
とspecies
は、しかし、私は作品の構文を見つけることができない、のViewDataからのものと、引数として渡さなければなりません。それにハードコードされたコール(作品)は、次のとおりです。
<uc:speciesgrid runat="server" ID="speciesgrid1" applicationId="6191" species="Dog"/>
私は<%, <%=, <%#
のすべての組み合わせを試し、どれも動作しません。だから、何かのように:
<uc:speciesgrid runat="server" ID="speciesgrid1" applicationId='<%AppData["NoiId"]%>' species="Dog"/>
エラーがすべて同じである:
{"Cannot create an object of type 'System.Int32' from its string representa{ion 'ViewData[\"NoiId\"]' for the 'applicationId' property."}
私が含まれてきたものは何でもではなく値でのサーバの代替を持つよりも、文字通りに解釈されていることは明らかです。
また、変数を設定して使用してみましたが、エラーは同じです。働いている何
<%
var applicationId = ViewData["NoiId"];
%>
はユーザコントローラでViewData['NoiId']
にアクセスしている:
protected void Page_Load(object sender, EventArgs e)
{
...
Debug.WriteLine("In the controller, ViewData['NoiId'] is: " + ViewData["NoiId"]);
}
> In the controller, ViewData['NoiId'] is: 6191
ように私には思われる。
- ユーザーコントロールは、その「前に」サーバー上で初期状態に構築されていますアプリケーションが起動します。なぜ私は
<%
引数を渡すことができません。 - 引数を渡す唯一の方法は、
ViewData
と、実行時のライフサイクルで後で解釈される同様のメカニズムです。
しかし、私は可能な限りパラメータとして引数を渡すことをお勧めします。
可能ですか?または上記2項の私の理解は正しいですか?
はい、私が働いたものですアリ感謝を。私はこの同じ質問をしましたが、より正確にはhttps:// stackoverflowで尋ねました。com/questions/46168566/asp-net-c-sharp-generate-user-control-parameters/46210657#46210657これらの行に沿って答えを提供しました。 – HankCa