簡體   English   中英

WebForms按鈕可以通過aspx標記訪問類代碼隱藏屬性嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM