![](/img/trans.png)
[英]ASP.NET Core -> Label asp-for not returning label text
[英]Difference between asp.net label text elements and ordnary text
我有個疑問
放置元素文本的這些標簽之間有什么不同?
<asp:Label ID="lbl2" **Text="Name"** runat="server"></asp:Label>
和
<asp:Label ID="lbl2" runat="server"**>Name</**asp:Label>
直接將文本放在文本屬性Text="Name"
,並將文本放在標簽字段的中心> Name </
我的gridview控件上有一些標簽,我想在編輯網格行時得到標簽文本值,所以我使用find控件之類的
*protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
Label xx = GridView1.Rows[e.NewEditIndex].FindControl("lbl2") as Label;
Label yy = GridView1.Rows[e.NewEditIndex].FindControl("lbl2") as Label;
txtName.Text = xx.Text;
txtAge.Text = yy.Text;
}*
她是我的gridview代碼
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lbl1" Text='<%# Eval("StudentName") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
如果我將Eval值放在標簽Text屬性中,現在正在工作,但是如果我在標簽面的中心給出eval值( <asp:Label ID="lbl1" runat="server"><%# Eval("StudentName") %></asp:Label>
)查找控件沒有得到值,它顯示為空(”“)。 為什么?
這個標簽文字類型有什么區別? 任何人請指教我!
編輯:
但是如果我在gridview外部設置標簽文本,那么兩種方式都運行良好(如果以兩種方式設置文本,則lblid.text給出正確的)! 只有我在gridview中的標簽中遇到了問題!
這個標簽文字類型有什么區別?
<asp:Label ID="lbl2" **Text="Name"** runat="server"></asp:Label>
將創建一個Label
控件,其Text
屬性將具有值“Name”
<asp:Label ID="lbl2" runat="server"**>Name</**asp:Label>
將創建一個Label
控件
Text
屬性的值為String.Empty
Literal
子控件, Text
屬性值為“Name” 請注意,同時使用這兩種行為(設置Text
屬性和擁有內容)可能會導致意外行為:請參閱http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.label .text.aspx
注意 :設置Text屬性將清除Label控件中包含的任何其他控件。
所以我認為問題在於你寫的時候:
<asp:Label ID="lbl2" runat="server"**><%# Eval("StudentName") %></**asp:Label>
然后
Label xx = GridView1.Rows[e.NewEditIndex].FindControl("lbl2") as Label;
txtName.Text = xx.Text;
您正在嘗試訪問尚未成為DataBound的子Literal控件的值
不確定它會起作用還是有所作為,但您可以嘗試:
Label xx = GridView1.Rows[e.NewEditIndex].FindControl("lbl2") as Label;
xx.Controls[0].DataBind();
txtName.Text = xx.Text;
無論如何,到目前為止你應該已經想到你最好使用Label的Text屬性而不是隱式Text Literal
標簽的第一個將給你跨度。 沒有多大區別,你更喜歡把它放在html中:
< span id="MainContent_lbl2" >Name< /span >
< span id="MainContent_Label1" >Name< /span >
當你在標簽之外寫Eval時,你仍然需要添加''(單引號)試試它,如果它不起作用,試試“”雙重qoutation。 我希望我能給你一些關於你的問題的見解:)
<asp:Label ID="lbl2" **Text="Name"** runat="server"></asp:Label>
我不確定,但這會將asp標簽呈現為<label>
,文本部分將呈現為此標簽的InnerText
,其中一個
<asp:Label ID="lbl2" runat="server"**>Name</**asp:Label>
這會將Name作為<label>
標簽的InnerHtml
呈現
最后,我找到了一個愚蠢的答案。 (我不知道這是一個答案)
對於我的codebehind有兩個類
public partial class Home : System.Web.UI.Page
手動所有頁面控件都由我的Home類定義
所以普通標簽給出了正確的兩種文本值
但我的下線是使用system.Ui.Page
類創建新標簽,
Label yy = GridView1.Rows[e.NewEditIndex].FindControl("lbl2") as Label;
現在這個find-control只獲取標簽屬性值Text="xx"
是標簽的屬性,所以它得到了值,但Name這個值沒有存儲在任何標簽屬性中,所以我們無法得到它。
(這是我的猜測)
而且我猜另一個原因(這只是一個笑話)
這個客戶端
<label>Text</label>
控件有開放和關閉標簽,但服務器端Label
控件沒有任何打開和關閉標簽,所以這個原因我無法獲得標簽值:P
asp:標簽控件呈現為跨距,而不是html標簽元素。 如果需要訪問服務器端的值,請使用Text屬性。 如果需要使用javascript在客戶端檢索值,請使用id.innerHTML。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.