通过 Javascript 设置 C# 属性值
Set C# Property Value by Javascript
我有一个C#属性类别ID,我想在Javascript中设置它的值。
我正在尝试设置值类别 ID,如下所示:
var sPath = window.location.pathname;
var catId = null;
var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
if (sPage == 'xyz.aspx')
{
<%=CommonUtility.CategoryID=4%>;
}
else if(sPage == 'zxy.aspx')
{
<%=CommonUtility.CategoryID=5%>;
}
但是通过这种方法,我总是得到 CategoryID= 5(在 else 块中)的值。
请建议我如何根据条件获取属性值。
不能从客户端 (js) 设置 C# 属性。你可以使用 ajax 来做一些工作,但你根本无法操作服务器端代码。
编辑:
如果你仍然想知道你怎么可能得到一个值,请参阅迈克对这一事实的解释。但事实仍然存在。你不能。这不可能。如果你想知道更长的解释,看看 asp.net 是如何工作的,它的生命周期等。简单的说法是这样的:
用户使用其浏览器向服务器发送请求。服务器接收它,创建一个请求的页面并实例化所需的类等。然后它被解析并作为html发送到客户端(当然还有其他资源,如图像,css......客户端之后无法访问和修改实例化的页面类,因为它已被服务器刷新。每个请求都会创建一个新实例。无论如何,没有办法将 js 与 c# 交互。你能想象如果你可以使用一些js在远程服务器上修改C#会是什么样子吗?这完全没有意义。
不能以这种方式使用客户端脚本在代码隐藏中设置属性。 做这样的事情的唯一方法是使用 AJAX 将数据发送到您的服务器,尽管我很确定这不适合您的情况。
当您调用 <%=CommonUtility.CategoryID = 4%>
时,服务器在将页面发送到客户端之前解析页面时实际上会执行该语句。 属性值为 5 的原因是,无论 Javascript if
块中的逻辑如何,这两个语句都会被执行。 在服务器已经解析了这两个标签之前,浏览器实际上不会执行您的客户端代码,此时无论如何都无法完成您想要的操作为时已晚。
有什么理由不能在页面加载的代码隐藏中完成所有这些操作吗? 你觉得这必须在JS中处理吗?
编辑:
如果无法访问代码隐藏文件(.aspx.vb 或 .aspx.cs),则只需在.aspx页面顶部使用服务器脚本块
<%
If (Request.Path.ToLower().Contains("xyz.aspx")) Then
CommonUtility.CategoryId = 4
ElseIf (Request.Path.ToLower().Contains("zxy.aspx")) Then
CommonUtility.CategoryId = 5
End If
%>
不能从客户端脚本设置 C# 变量,因为所有服务器代码都先运行,然后将页面发送到浏览器。
客户端代码最终将如下所示:
var sPath = window.location.pathname;
var catId = null;
var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
if (sPage == 'xyz.aspx')
{
4;
}
else if(sPage == 'zxy.aspx')
{
5;
}
}
- 将属性设置为未定义时未通知观察者
- 是否有任何内置方法可以更改JavaScript对象'的属性设置为某个值
- 附加'沙箱'属性设置为动态创建的iframe以停止重定向
- 如何将按钮的数据属性设置为输入[type=text]中设置的任何值
- 在jquery中,从同一对象的属性设置输入字段和标签的正确方法是什么
- 当可见属性设置为 false 时,使用 JavaScript 删除空格
- 无法使用 Snap.SVG将“填充”属性设置为“继承”
- 使用jQuery为属性设置新值
- 是否可以通过属性's值,并将属性设置为parentNode
- 如何使用按钮的jsp点击事件将属性设置为struts-bean
- 在ember.js记录上使用toJSON,将其中一个属性设置为null
- javascript函数属性设置器中的延迟
- 添加“;选中'属性设置为jquery中的复选框
- jQuery/JavaScript按属性设置数组
- Dojo.将JSon中的属性设置为HTML属性
- 将class属性设置为元素不适用于javascript和jquery
- 将属性设置为对对象的引用
- 如何将显示属性设置为与内联!重要的
- jQuery-根据HTML属性设置CSS维度
- 为什么我不能在 JavaScript 中将对象属性设置为空字符串