2011-05-24 46 views
1

我在我的HTML div元素,奇怪的問題與asp.net C#分配字符串

<div id="userSolution" runat="server" text="1234512345123451234512345"></div> 

是的,它確實包含25個字符,

我有一個按鈕:

<asp:Button id="saveGame" runat="server" text="Save Game" onclick="saveGame_Click" /> 

服務器代碼:

protected void saveGame_Click(object sender, EventArgs e) 
{ 
    string clientInput = userSolution.Attributes["text"]; 
} 

所以爲什麼......當我調試時,clientInput =「」?

我估計...... text="1234512345123451234512345"

所以string clientInput= userSolution.Attribute["text"];應該工作的權利? :■

迷茫......

即使DIV是:

<div id="userSolution" runat="server">1234512345123451234512345</div> 

和我讀

string clientId = userSolution.InnerHTML; 

仍未

+4

號div元素從未有過的文本屬性。 – BoltClock 2011-05-24 19:43:09

+0

即使我從innerHTML中讀取它,並使我的文本值div div innerhtml的一部分...仍然失敗 – 2011-05-24 19:48:02

+0

innerText怎麼樣? – 2011-05-24 19:51:59

回答

3

如果您要在客戶端設置div的值,您不能將數據以這種方式回發到div標籤中您需要使用表單元素,如果您想使用直接的ASP.NET回發,就像隱藏文本框一樣。

這是一個簡單的例子。它使用javascript事件來設置按下按鈕時HiddenField的文本,然後在回發中顯示文本。

<%@ Page Language="C#" AutoEventWireup="true" %> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<script type="text/javascript"> 
    function copyToHiddenField() { 
     var hidden = document.getElementById("<%= txtHidden.ClientID %>"); 
     var theDivText = document.getElementById("thedata").innerHTML; 
     hidden.value = theDivText; 
     return true; 
    } 
</script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <div id="thedata">Here's the data!</div> 
     <asp:HiddenField ID="txtHidden" runat="server" /> 
     <asp:Button ID="btnSumbit" Text="Submit" OnClick="btnSumbit_OnClick" runat="server" /> 
     <asp:Literal ID="litText" runat="server" /> 
    </form> 
</body> 
</html> 
<script runat="server"> 
protected void Page_Load(object sender, EventArgs e) 
{ 
    btnSumbit.Attributes.Add("onclick", "return copyToHiddenField();"); 
} 

public void btnSumbit_OnClick(object sender, EventArgs e) 
{ 
    litText.Text = txtHidden.Value; 
} 
</script> 

編輯
作爲答案/評論說,你可以使用一個div標籤的InnerText財產時指定runat="server",但你只能讀出InnerText時設置的頁面呈現。客戶端更新到div的InnerText將不會在回發中發送到服務器。

+0

您可以如果你真的想這樣做,也許真正的問題是OP爲什麼要這麼做,而我認爲這就是你使用隱藏字段的地方,如果這就是你想要的,爲什麼不使用asp:HiddenField? – ashelvey 2011-05-24 20:13:04

+0

@ashelvey我會使用HiddenField(如上面的示例代碼)或使用AJAX發回數據。我的觀點是,因爲div不是一個表單元素,div中包含的任何數據都不會當點擊提交按鈕時瀏覽器發出POST請求的一部分 – rsbarro 2011-05-24 20:17:24

+0

沒錯,它將在ASP.NET狀態,所以它是*可能的*,但它絕對不是正確的方式來做你的已經說過了,我想我只是在迂腐。:)我同意你的方法,投票。 – ashelvey 2011-05-24 20:31:06

0

使用ASP:面板。這應該給你後(一個在客戶端和。文本在服務器代碼中的div是什麼

編輯

哇,這已經有一段時間了,我實際上覺得有一個Text屬性 - 我甚至查舊的項目難以置信!!: -/

+0

我使用了asp:面板之前,我使用div ...和asp:面板失敗後,我搬到了divs ...現在divs失敗:'( – 2011-05-24 19:57:42

+0

面板沒有屬性文本 – ashelvey 2011-05-24 20:03:03

1

嘗試的innerText,也改變

<div id="userSolution" runat="server" text="1234512345123451234512345"></div> 

<div id="userSolution" runat="server">1234512345123451234512345</div>