通过 javascript 设置输入值
Setting the value of an input through javascript
我想做的是通过 javascript 更改代码背后的 C# veriable 值。我的代码:
HTML & JS -
function SetPostbackValues() {
document.getElementById("hiddenControl").value = "Employer";
}
function SetPostbackValues2() {
document.getElementById("hiddenControl").value = "Employee";
}
<!-- it's all inaide a form tag -->
<div id="left">
<div id="background" style="background: url(paper.gif); background-size: cover;" onclick="chg();SetPostbackValues();"><img id="man" style="right:16px;" src="https://www.watertankfactory.com.au/wp-content/uploads/2015/08/Smiling-young-casual-man-2.png" /> <div id="desc">employer</div>
</div>
<div id="trying"></div>
</div>
<div id="right">
<div id="background2" style="background: url(paper.gif); background-size: cover;" onclick="chg();SetPostbackValues2();"><img id="man2" style="right:16px;" src="https://www.watertankfactory.com.au/wp-content/uploads/2015/08/Smiling-young-casual-man-2.png" /><div id="desc2">employee</div>
</div>
</div>
<input id="hiddenControl" type="hidden" runat="server" />
C#-
protected void RegisterUser()
{
//this will run when the client presses on the 'register' button
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Record Inserted Successfully')", true);
u.Email = Email.Text;
u.Password = Password.Text;
u.Firstname = Firstname.Text;
u.Lastname = Lastname.Text;
u.Gender = Gender.SelectedItem.Text;
//relevant bit:
u.Type = hiddenControl.Value;
u.Birthday = Birthday.SelectedDate.ToString("dd/MM/yyyy");
u.Country = Country.Text;
u.City = City.Text;
u.Address = Address.Text;
if (Pfp.HasFile)
{
string path = Server.MapPath("pics/");
Pfp.SaveAs(path + Pfp.FileName);
u.Pfp = Pfp.FileName;
}
s.AddClient(u);
}
因此,当客户首次进入该站点时,他们将按 background
或 background2
,这应该为隐藏输入设置一个值,该值将在注册中使用代码背后的功能。当我设置断点时,我看到该值始终只是一个空字符串 - ""
在我所有的迭代中(尝试在 C# 中为其设置 To.String()
,并删除 [= 中值周围的“” =39=],但没有任何效果)。我不明白为什么它不会设置一个值...
感谢您的帮助!
可能你的错误在chg()函数中,检查一下。
另一方面,您必须将“”添加到这样的值中:
function SetPostbackValues() {
document.getElementById("hiddenControl").value = "Employer";
}
function SetPostbackValues2() {
document.getElementById("hiddenControl").value = "Employee";
}
找到解决方法,就是ID...
在您的代码中,ASP 元素的 ID 是服务器端的。但是当你 运行 代码时, ASP 元素在客户端的 ID 是不同的。在 javascript 脚本中,函数正在寻找与服务器端 ID 匹配的元素,它们永远找不到,因此隐藏元素的值将保持为空字符串。
TLDR - 像这样写是为了防止脚本检测到客户端代码中(看似)不存在的元素:
function SetPostbackValues() {
document.getElementById('<%= hiddenControl.ClientID %>').value = "Employer";
}
function SetPostbackValues2() {
document.getElementById('<%= hiddenControl.ClientID %>').value = "Employee";
}
我想做的是通过 javascript 更改代码背后的 C# veriable 值。我的代码:
HTML & JS -
function SetPostbackValues() {
document.getElementById("hiddenControl").value = "Employer";
}
function SetPostbackValues2() {
document.getElementById("hiddenControl").value = "Employee";
}
<!-- it's all inaide a form tag -->
<div id="left">
<div id="background" style="background: url(paper.gif); background-size: cover;" onclick="chg();SetPostbackValues();"><img id="man" style="right:16px;" src="https://www.watertankfactory.com.au/wp-content/uploads/2015/08/Smiling-young-casual-man-2.png" /> <div id="desc">employer</div>
</div>
<div id="trying"></div>
</div>
<div id="right">
<div id="background2" style="background: url(paper.gif); background-size: cover;" onclick="chg();SetPostbackValues2();"><img id="man2" style="right:16px;" src="https://www.watertankfactory.com.au/wp-content/uploads/2015/08/Smiling-young-casual-man-2.png" /><div id="desc2">employee</div>
</div>
</div>
<input id="hiddenControl" type="hidden" runat="server" />
C#-
protected void RegisterUser()
{
//this will run when the client presses on the 'register' button
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Record Inserted Successfully')", true);
u.Email = Email.Text;
u.Password = Password.Text;
u.Firstname = Firstname.Text;
u.Lastname = Lastname.Text;
u.Gender = Gender.SelectedItem.Text;
//relevant bit:
u.Type = hiddenControl.Value;
u.Birthday = Birthday.SelectedDate.ToString("dd/MM/yyyy");
u.Country = Country.Text;
u.City = City.Text;
u.Address = Address.Text;
if (Pfp.HasFile)
{
string path = Server.MapPath("pics/");
Pfp.SaveAs(path + Pfp.FileName);
u.Pfp = Pfp.FileName;
}
s.AddClient(u);
}
因此,当客户首次进入该站点时,他们将按 background
或 background2
,这应该为隐藏输入设置一个值,该值将在注册中使用代码背后的功能。当我设置断点时,我看到该值始终只是一个空字符串 - ""
在我所有的迭代中(尝试在 C# 中为其设置 To.String()
,并删除 [= 中值周围的“” =39=],但没有任何效果)。我不明白为什么它不会设置一个值...
感谢您的帮助!
可能你的错误在chg()函数中,检查一下。
另一方面,您必须将“”添加到这样的值中:
function SetPostbackValues() {
document.getElementById("hiddenControl").value = "Employer";
}
function SetPostbackValues2() {
document.getElementById("hiddenControl").value = "Employee";
}
找到解决方法,就是ID...
在您的代码中,ASP 元素的 ID 是服务器端的。但是当你 运行 代码时, ASP 元素在客户端的 ID 是不同的。在 javascript 脚本中,函数正在寻找与服务器端 ID 匹配的元素,它们永远找不到,因此隐藏元素的值将保持为空字符串。
TLDR - 像这样写是为了防止脚本检测到客户端代码中(看似)不存在的元素:
function SetPostbackValues() {
document.getElementById('<%= hiddenControl.ClientID %>').value = "Employer";
}
function SetPostbackValues2() {
document.getElementById('<%= hiddenControl.ClientID %>').value = "Employee";
}