使用 javascript 设置隐藏字段的值,然后从服务器端 C# 代码访问值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/331599/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-03 23:32:29  来源:igfitidea点击:

Using javascript to set value of hidden field then access value from serverside c# code

c#javascript

提问by mancmanomyst

I am using a nested html unordered list styled as a drop down. When the a tag within the inner lists list item is clicked it trigger some javascript which is supposed to set the value of a hidden field to the text for the link that was clicked.

我正在使用样式为下拉列表的嵌套 html 无序列表。当点击内部列表列表项中的 a 标签时,它会触发一些 javascript,它应该将隐藏字段的值设置为被点击的链接的文本。

The javascript seems to work - I used an alert to read the value from the hidden field but then when I try to put that value in the querystring in my asp.net c# code behind - it pulls the initial value - not the javascript set value.

javascript 似乎工作 - 我使用警报从隐藏字段中读取值但是然后当我尝试将该值放入我的 asp.net c# 代码中的查询字符串中时 - 它提取初始值 - 而不是 javascript 设置值.

I guess this is because the javascript is client side not server side but has anyone any idea how i can get this working

我想这是因为 javascript 是客户端而不是服务器端,但有人知道我如何让它工作

HTML

HTML

    <div class="dropDown accomodation">
    <label for="accomodationList">Type of accomodation</label>
    <ul class="quicklinks" id="accomodationList">
        <li><a href="#" title="Quicklinks" id="accomodationSelectList">All types
     <!--[if IE 7]><!--></a><!--<![endif]-->

    <!--[if lte IE 6]><table><tr><td><![endif]-->
    <ul id="sub" onclick="dropDownSelected(event,'accomodation');">
            <li><a href="#" id="val=-1$#$All types" >All types</a></li>
            <li><a href="#" id="val=1$#$Villa" >Villa</a></li>
            <li><a href="#" id="val=2$#$Studio" >Studio</a></li>
            <li><a href="#" id="val=3$#$Apartment" >Apartment</a></li>
            <li><a class="last" href="#" id="val=4$#$Rustic Properties" >Rustic Properties</a></li>

    </ul>
    <!--[if lte IE 6]></td></tr></table></a><![endif]-->
        </li></ul>
    </div>

<input type="hidden" ID="accomodationAnswer" runat="server" />

javascript

javascript

    if(isChildOf(document.getElementById(parentList),document.getElementById(targ.id)) == true)
{           

            document.getElementById(parentLi).innerHTML = tname;            
            document.getElementById(hiddenFormFieldName).Value = targ.id;
            alert('selected id is ' + targ.id + ' value in hidden field is ' +           document.getElementById(hiddenFormFieldName).Value);
}

C# code

C# 代码

String qstr = "accom=" + getValFromLiId(accomodationAnswer.Value) + "&sleeps=" + getValFromLiId(sleepsAnswer.Value) + "&nights=" + getValFromLiId(nightsAnswer.Value) + "&region=" +
getValFromLiId(regionAnswer.Value) + "&price=" + Utilities.removeCurrencyFormatting(priceAnswer.Value);

回答by Jason Bunting

I would do this: First, remove the runat='server'attribute from the hidden field (inside body):

我会这样做:首先,runat='server'从隐藏字段(体内)中删除属性:

<input type="hidden" id="accomodationAnswer" />

Now, on the server, where you want to read that value, do this:

现在,在要读取该值的服务器上,执行以下操作:

string accomodationAnswer = Request.Form["accomodationAnswer"];

// now use accomodationAnswer instead of accomodationAnswer.Value 
// in the C# code that you indicated you are using

That should do it.

那应该这样做。

回答by Raj

Try this

尝试这个

if you are using .net 4.0 then in page header.

如果您使用的是 .net 4.0,则在页眉中。

Language="C#" AutoEventWireup="true" CodeFile="Page.cs" Inherits="Page"

Language="C#" AutoEventWireup="true" CodeFile="Page.cs" Inherits="Page"

Alongwith this write:

连同这篇写:

ClientIDMode="Static"

It helps in not changing the server side control id at runtime

它有助于在运行时不更改服务器端控件 ID

Now

现在

Set the value in javascript as

将 javascript 中的值设置为

document.getElementById("hiddenField").value = "Vallue";

document.getElementById("hiddenField").value = "Value";

And access in codebehind like below.

并在代码隐藏中访问,如下所示。

string hiddenVallue=hiddenField.Value.ToString();

字符串 hiddenValue=hiddenField.Value.ToString();