2014-02-13 1 views
1

У меня есть скрытое поле, которое я поставил в моем яваскрипте кода:ASP .net получить скрытое значение из кода позади в функции page_load

<script type="text/javascript"> 

    function start() {    
     document.getElementById('Hidden1').value = "somme value"; 
    } 
    </script> 

<body> 

<form id="form1" runat="server"> 
    <div> 
     <input type="text" id="Hidden1" name="Hidden1" runat="server"/> 
    <div>  
</form> 

В моем коде позади, я хочу, чтобы получить значение входного сигнала в моей функции page_load :

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.ClientScript.IsClientScriptBlockRegistered("start") && !IsPostBack) 
     { 

      Page.ClientScript.RegisterStartupScript(typeof(Page), "start", "start();", true); 

     } 
     string message =Hidden1.Value; 
    } 

Сообщение пустое, как can'I получить скрытое значение в моей page_load?

Спасибо.

+0

Вы отправляете/отправляете или получаете? –

+0

Когда вы выполняете метод start() js? nevermind, я вижу, что он зарегистрирован в стартапе –

+0

, так что вернемся к моему первоначальному комментарию, где находится код, который отправляет страницу? –

ответ

1

Вы не отправляете страницу назад на сервер, вы не сможете «получить» переменные страницы, если вы не выполняете POST.

изменить это:

<form id="form1" runat="server"> 
<div> 
    <input type="text" id="Hidden1" name="Hidden1" runat="server"/> 
<div>  
</form> 

к этому: (EDIT: изменил type="hidden" тоже)

<form id="form1" runat="server"> 
<div> 
    <input type="hidden" id="Hidden1" name="Hidden1" runat="server"/> 
<div>  
<input type="submit" value="submit" /> 
</form> 

Затем нажмите кнопку

+0

нет другого решения? Я должен получить свое скрытое поле в загрузке страницы, чтобы реализовать конкретное поведение – Nabila

+0

за пределами отправки ваших данных через вызов AJAX, нет. Я не уверен, что вы правильно объяснили, что вы пытаетесь сделать. Если вы хотите установить элемент html и не хотите каким-то образом передавать эти данные на сервер, вы потеряли меня. –

+0

Кто вам сказал, что на странице есть кнопка отправки? извините, вы делаете предположения. –

0

Чтобы подвести итог, что другие написали представить (по выглядит так, если вы нажмете кнопку отправки, чтобы получить обратную передачу:

<asp:HiddenField ID="HiddenField1" runat="server" /> 
<asp:Button Text="Submit" ID="btnSubmit" runat="server"/> 
<script type="text/javascript"> 
    document.getElementById('<%= HiddenField1.ClientID %>').value = "some value"; 
</script> 
-1
<form id="form1" runat="server"> 
    <div> 
     <asp:HiddenField ID="Hidden1" runat="server"/> 
    <div>  
</form> 

protected void Page_Load(object sender, EventArgs e) 
{ 
     if (!Page.IsPostBack) 
     { 
      Hidden1.Value = "Some Val"; 
     } 
     else 
     { 
      string message =Hidden1.Value; 
      // remaining code 
     } 
} 
+0

где есть обратная связь? –

+0

@TMcKeown: Почему вы проголосовали? необходимо отобразить кнопку и попросить OP щелкнуть ее, и она будет возвращена. вы ...... –

+0

Потому что вопрос заключается в том, как получить значение скрытого элемента на стороне сервера. Плакат не предоставляет способ публикации, ваш ответ не работает без обратной связи. Мне нравится ваше решение, связанное с посевом по умолчанию, я просто голосую, потому что он не отвечает, почему на стороне сервера нет никакой ценности. –

0

Что вам не хватает, это что-то вроде строк сообщения JQuery.

Веб-приложения не имеют гражданства.

Как и в случае с некоторыми более ранними сообщениями, на стороне сервера недостаточно для получения значения элемента управления на клиенте без какого-либо события обратной передачи. Сервер должен знать, что происходит. В вашем клиентском коде вы получаете значение элемента управления в своем блоке сценария, но на сервере нет сообщений, чтобы сообщить ему, что произошло в коде клиента. Вам нужно понять, что либо вы отправляете форму (или, по крайней мере, данные) обратно на сервер, либо, если вы хотите, чтобы это произошло без полной обратной передачи, вам нужно узнать JQuery or Ajax.

Если вам нужно, чтобы это произошло без какого-либо пользовательского события, выполните запись в функции document.ready. Однако это избыточно, потому что ваш сервер отправил данные в первую очередь, поэтому без взаимодействия с пользователем (в document.ready) нет ничего, что сервер еще не знает, особенно в скрытом значении.