[英]assign value to javascript variable In C# CodeBehind
如何从代码隐藏(C#)为javasctipt变量赋值?
<script type="text/javascript">
String.prototype.trim = function () { return this.replace(/^\s+|\s+$/, ''); };
function ConstantByCode(_Obj, _Div) {
var pl = new SOAPClientParameters();
_Obj.value = _Obj.value.trim();
pl.add("Code", _Obj.value);
pl.add("Group", _Obj.Grp);
alert(_Obj.Grp);
var _Value = SOAPClient.invoke("ConstantWS.asmx", "GetConstantByCode", pl, false, CallBackEvent);
if (_Value == null || _Obj.value == "" || _Obj.value == null || IsNumeric(_Obj.value) == false) {
_Obj.value = "";
_Div.innerHTML = "";
}
else {
_Div.innerHTML = _Value;
}
}
function CallBackEvent(r) {
}
function IsNumeric(input) {
return (input - 0) == input && input.length > 0;
}
背后的代码
txtCode.Attributes.Add("Grp", Me.ConstValue)
txtCode.Attributes.Add("onchange", "ConstantByCode(this," & DivTitle.ClientID & ");")
txtCode.Attributes.Add("onkeyup", "ConstantByCode(this," & DivTitle.ClientID & ");")
_obj.Grp现在具有值。 警报说:未定义
首先,您将需要访问客户端上的值。 我们可以通过将值存储在隐藏字段中或向控件添加属性来实现。 看来您希望通过使用属性来执行此操作,因此让我们先执行此操作。
将以下内容添加到您的page_load方法中,以便我们可以访问客户端上的C#值。
受保护的无效Page_Load(object sender,EventArgs e){string requiredJSValue =“在此处输入您的值”; txtCode.Attributes.Add(“ CSCodeAttribute”,requiredJSValue); }
然后,我们需要通过Javascript访问此值。 首先,我们将需要获取控件的客户端ID,因为C#将设置此值。 注意。 我正在使用Jquery检索控件ID。 这不是必需的,但是我更喜欢。 jQuery是javascript的框架,可以从www.jquery.com下载。
函数GetCSAttributeValue(){var csControlID = $('#<%= txtUOMCost.ClientID%>'); //获取控件名称。 var requiredJSValue = csControlID .attr(“ CSCodeAttribute”); //值存储在变量中。 }
我看到您要检索Grp的值,这是一个自定义属性。 您需要使用getAttribute函数-因此,您需要使用_Obj.getAttribute("Grp")
而不是_Obj.Grp
。
此外,我看到您没有将客户端ID括在ode-behind中。 所以代替
txtCode.Attributes.Add("onchange", "ConstantByCode(this," & DivTitle.ClientID & ");")
你需要说
txtCode.Attributes.Add("onchange", "ConstantByCode(this,'" & DivTitle.ClientID & "');")
注意客户端ID周围的单引号(')。
此外,ConstantByCode js函数似乎正在使用div元素。 因此,您需要向其添加行以将客户端ID转换为实际DOM。 即
function ConstantByCode(_Obj, _Div) {
_Div = document.getElementById(_Div);
.... // rest of the code
我不确定100%,但是我认为您需要一种变通方法以使其正常工作。 因为在逻辑上在后端javascript变量甚至不存在。 您可能可以创建一个隐藏字段,并使其成为javascript变量和后面的代码之间的桥梁。 检查一下: http : //forums.devx.com/showthread.php?t=164356
请尝试以下操作:1.在.aspx页中添加一个隐藏字段:
<asp:HiddenField ID="hidden" runat="server" />
2.在后面的代码中更改此字段的值:
protected void Page_Load(object sender, EventArgs e)
{
hidden.Value = "hello";
}
3.编写以下脚本以访问值并将其放在任何变量中:
<script type="text/javascript">
if (document.getElementById("MainContent_hidden") != undefined) {
var hiddenVal = document.getElementById("MainContent_hidden").value;
}
else {
var hiddenVal = null;
}
</script>
警告:第三部分很棘手。 调用getElementById函数时,我们没有使用第一步中提供的ID。 这是因为asp.net对此进行了更改,并且临时解决方法是仅运行一次页面并查看其源代码。 检查隐藏字段的ID,并将其放在getElementById函数的第3步中。 您可以寻找更好的替代方法,但是现在可以使用。 如果您对第3步感到震惊,请告诉我。
我看不到您的问题与代码有何关系...
但是要从服务器端设置一个javascript值的值……那是不可能的,因为服务器端代码恰好在服务器中以及在HTML到达客户端和执行javascript之前的方式运行。
但是您可以做的是使服务器端代码生成一段保留您价值的javascript。
<script type="text/javascript">
var x = <%= ServerSideMethod() %>;
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.