我是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
這似乎對我說:
- 用戶控件initialy建立在服務器上的「前」是申請開始。因此爲什麼我不能通過任何
<%
的論點。 - 並且傳遞參數的唯一方法是通過
ViewData
以及在運行時在生命週期後面解釋的類似機制。
但是我寧願傳遞參數作爲參數,如果可能的話。
可能嗎?或者,我在上面第2段中的理解是否正確?
是感謝阿里,這就是我的工作了。我問了同樣的問題,但更精確地在https:// stackoverflow中。com/questions/46168566/asp-net -c-sharp-generate-user-control-parameters/46210657#46210657並提供了一個答案。 – HankCa