[英]Can a WebForms button access a class code-behind property via the aspx markup?
從Web窗體ASPX標記
<tr>
<td><asp:Label ID="monstersPrimaryWeaponDamageTotalLabel" Text="Primary Weapon Damage: " runat="server" />
</td>
<td><asp:Button ID="PrimaryWeaponDamageButton"
Text="Update Primary Weapon Damage"
ValidationGroup="MakeMonster"
runat="server"
OnClick="MonstersPrimaryWeaponDamageTotalString"
</td>
<td><%=MonstersPrimaryWeaponDamageTotalString%></td>
</tr>
從背后的代碼
string monstersPrimaryWeaponDamageTotalString = " -NA- ";
public string MonstersPrimaryWeaponDamageTotalString
{
get{return monstersPrimaryWeaponDamageTotalString;}
set{monstersPrimaryWeaponDamageTotalString = value;}
}
來自網絡瀏覽器的錯誤(FireFox)
Compilation Error Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. Compiler Error Message: CS0118: 'MakeMonsters.MonstersPrimaryWeaponDamageTotalString' is a 'property' but is used like a 'method' Source Error: Line 860: <td><asp:Label ID="monstersPrimaryWeaponDamageTotalLabel" Text="Primary Weapon Damage: " runat="server" /> Line 861: Line 862: <td><asp:Button ID="PrimaryWeaponDamageButton Line 863: Text="Update Primary Weapon Damage" Line 864: ValidationGroup="MakeMonster"
在來自Web瀏覽器的錯誤中,將862行突出顯示為問題。 盡管從上面Visual Studio的發布代碼中可以看到,行862-864都是asp:button行的一部分。
我正在嘗試做的事情:我有一個Web表單,該表單收集用於在角色扮演游戲中創建角色表的數據。 然后它將數據寫入XML文件。
這不是電腦游戲,所以不要以為我甚至可以開始編寫這種類型的代碼。 不,我們以傳統的流行方式玩桌上型游戲,只是我寫故事而已,是GM(DM)。 我所要做的就是將我的書籍以XML格式放置,以便玩家可以從筆記本電腦和手機上訪問它們。 通過在紙上重新打印所有內容,節省了大量時間和金錢。 不是計算機程序。
我快到一半了,創建XML文件沒有問題。
現在,我想修改Web表單,以便在輸入某些數據時,我可以單擊某些字段旁邊的按鈕,這些字段是根據其他各個字段計算得出的,它會在一個單獨的空白字段中為我顯示結果。 這樣做的目的是在完成整個表單並將其提交以創建XML文件之前,查看到目前為止我輸入的結果。
抱歉,我不是專業人士。 這只是業余愛好,但是在Internet上(在這個論壇和Google上)做了大量的閱讀,但是可能不了解足夠的計算機科學理論來正確地提出我的問題,以獲取有用的答案。
給我一些骨頭,我將嘗試編輯我的問題和示例代碼,以幫助其他尋求此類問題答案的人。
我正在尋找的知識是如何訪問設置器並從Web表單獲取信息。 IE:我想做的是單擊一個按鈕,然后在代碼后面進行一些計算,字符串處理以及所有這些工作,然后將結果存儲在變量中。 然后,Web表單將在網頁上顯示變量。
我認為我的問題是了解整體,靜態,公共,私有,受保護的事物; 但是我嘗試了所有這些方法的十幾種方法,但結果卻變得更糟。 如錯誤所示,我正在嘗試使用屬性作為方法。 這是我想知道的。
屬性有點像變量(不確定區別)。 它被設計為數據庫中的一個字段。 在后面的代碼中,它的行為類似於一種方法(在我的頭發變白之前,我們稱它為子例程,然后稱為函數)。 屬性應該簡短明了,但是可以像方法一樣訪問-盡管我真的不認為它們是如此。 方法(是一個函數),您可以傳遞大量數據。 方法是針對更復雜的需求的,但它們可能非常簡單。
您需要為按鈕提供事件處理程序:
protected void Btn_OnClick(Object sender, EventArgs e)
{
//yourCode
}
您的ASPX:
<asp:Button ID="PrimaryWeaponDamageButton"
Text="Update Primary Weapon Damage"
ValidationGroup="MakeMonster"
runat="server"
OnClick="Btn_OnClick" />
如果這不是問題,請在您的問題中進行說明
頁面標記:
<asp:PlaceHolder ID="ph1" runat="server">
<%# _description %>
</asp:PlaceHolder>
<br />
<asp:Button ID="btnUpdateDescription" runat="server"
Text="Update Description" OnClick="btnUpdateDescription_Click" />
后面的代碼:
public partial class your_page : System.Web.UI.Page
{
public string _description;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
_description = "descriptor";
ph1.DataBind();
}
}
protected void btnUpdateDescription_Click(object sender, EventArgs e)
{
_description = "new description";
ph1.DataBind();
}
}
引起此錯誤的問題不是我問這個問題時的想法。
我一直在做的事情是轉換我直接聲明的所有變量:
像這樣
字符串railRoadTracks =“ choo-choo”;
設置為帶有setter和getter的更合適的屬性
像這樣
私有字符串railRoadTracks =“ choo-choo”;
公共字符串RailRoadTracks
{
get{return railRoadTracks;}
set{railRoadTracks = value;}
}
在執行此操作時,Visual Studio可以通過保存大量重新鍵入並將所有正式用作railRoadTracks的變量更改為RailRoadTracks來提供幫助。 它只是自動批量重命名功能,以確保您的程序正在使用新的屬性。
創建新屬性時,Visual Studio彈出詢問您是否要完成此操作。 由於無知,我不知道此彈出窗口的含義,並告訴它沒有。 我去手動更改了當時正在使用的變量(在新的程序員中稱為屬性),而其他變量則保持不變。 同時更改程序的其他部分以使用公共變量和私有變量,我搞砸了所有內容,並且一旦公共變量變成私有后,我的網頁就試圖訪問。 解決的辦法是去修改整個程序以使用所有相同的屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.