2017-09-11 14 views
0

私はASP.netを初めて使用しており、更新するアプリケーションを継承しています。私は非常にうまくいくつもりですが、私は理解の助けが必要です。Asp.Net WebForms - ViewDataをユーザーコントロールにパラメータとして渡す方法

私はいくつかの引数を取り、ユーザーコントロールuc:speciesgridを持っている:applicationIdspeciesは、しかし、私は作品の構文を見つけることができない、の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項の私の理解は正しいですか?

答えて

0

ASP.NETでMVCパターンを使用し、ViewからUserControlにパラメータを渡す傾向があると思います。そのため、ビューページで以下のコードを使用することはできません。

<uc:speciesgrid runat="server" ID="speciesgrid1" applicationId="6191" species="Dog"/> 

ビューページにはコードがないため、 ASP.NET MVCに負荷ascxまたはPartial Viewに使用

<% Html.Partial("~/Views/Home/SpeciesGridController.ascx", ViewData["NoiId"]); %> 

Html.PartialまたはHtml.RenderPartialUserControlへのパスパラメータでは、このコードを使用することができます。次に、あなたがViewData["NoiId"]を取得し、このようPage_Loadで変数やascxのプロパティに設定することができます。

UserControl

+0

はい、私が働いたものですアリ感謝を。私はこの同じ質問をしましたが、より正確にはhttps:// stackoverflowで尋ねました。com/questions/46168566/asp-net-c-sharp-generate-user-control-parameters/46210657#46210657これらの行に沿って答えを提供しました。 – HankCa

関連する問題