好久没看到过问这种问题的了......
问这个问题的一般都是asp.net的,那些服务器控件确实使得程序员连web程序的运行过程,还有服务端与客户端都分不清楚了
js代码是浏览器执行的,C#代码时服务器执行的,都不在一台电脑上运行,你还想互相调来调去......js代码想调C#函数,必须进行通讯,要么提交表单,要么ajax,但这也不是js在调用,只是发出请求,传递一些参数,服务端根据这些参数决定执行某个函数,将返回值发送给客户端;C#调js函数也一样,只能是往客户端发送一些数据,然后客户端获取到后根据这些数据决定执行哪些代码我自己开始也是做asp.net,可惜当时没人对我说这番话,现在想来也走过不少弯路
问这个问题的一般都是asp.net的,那些服务器控件确实使得程序员连web程序的运行过程,还有服务端与客户端都分不清楚了
js代码是浏览器执行的,C#代码时服务器执行的,都不在一台电脑上运行,你还想互相调来调去......js代码想调C#函数,必须进行通讯,要么提交表单,要么ajax,但这也不是js在调用,只是发出请求,传递一些参数,服务端根据这些参数决定执行某个函数,将返回值发送给客户端;C#调js函数也一样,只能是往客户端发送一些数据,然后客户端获取到后根据这些数据决定执行哪些代码我自己开始也是做asp.net,可惜当时没人对我说这番话,现在想来也走过不少弯路
修改了里面的值,等操用。但后台不知道客户端做了这些操作。我在后cs的文件里有一个方法,就是把
这个表里的数据提交给数据库,问题来了,用JS修改的东东,获取不到,不能正确的把客户端的修改写
进数扰库
但是以下的JS函数可以获取客户端修改后的数据,所以想用以下的函数返回值给这个cs里的方法,再把这个
值写进数据库
function bb()
{
var Grid1=document.getElementById ("GridView2")
var aa=Grid1.rows[0].cells[0].getElementsByTagName("input")[0].value
return
}
这个是JS函数,可以获得table第一个单元格的值,
说点你明白的吧,有很简单的方法,就是用服务器控件,把你需要传递的值赋给一个服务器控件的某个属性(服务器控件支持的属性),然后就可以在C#中获取了;
比如你在html中写一个
<input style='display:none;' id='param1' runat="server" />
然后 js中 document.getElementById('param1').value="test1";
然后C#中 string str1=param1.Value;
这样就行了,C#获取到该值
C#:调用js函数,然后去取控件的值
ajax是干嘛用的呢?
post 是干嘛用的呢?
服务器控件是干嘛用的呢?
另外你会用什么方式呢?
“服务器的按钮”?任何控件最后都是生成了HTML+CSS+JS,都是通过浏览器向服务器发送请求和数据,服务器才能处理。如果不是有视图状态,你根本不能通过GridView1.XXX的方式获取到数据。每次请求都是独立的,没有状态的。只要网页发送到了客户端,跟服务器就没关系了。
服务器不能主动调用客户端方法,也不能主动从客户端获取数据,你可以把修改后的数据提交到服务器不就行了么,只要你懂得一点Request
搞个客户端按钮,添加个js事件,用ajax提交到服务器端,全部修改。
客户端JS:
<script type="text/javascript">
window.Save = function () {
var title = document.getElementById("Text_Title").value;
var lb = document.getElementById("Text_Lb").value;
var info = document.getElementById("Text_Info").value;
location.href = "AddInfo.aspx?title='" + title + "'&lb='" + lb + "'&info=" + info;
};
</script>
后台cs: protected void Page_Load(object sender, EventArgs e)
{
string title=Request.QueryString["title"];
string lb = Request.QueryString["lb"];
string info = Request.QueryString["info"];
string result = title + lb + info;
}
{
string path = AppDomain.CurrentDomain.BaseDirectory + "xxx.js";
string str2 = File.ReadAllText(path); string fun = string.Format(@"JS函数('{0}','{1}')", "参数","参数");
string result = ExecuteScript(fun, str2);
MessageBox.Show(result);
} private string ExecuteScript(string sExpression, string sCode)
{
MSScriptControl.ScriptControl scriptControl = new MSScriptControl.ScriptControl();
scriptControl.UseSafeSubset = true;
scriptControl.Language = "JScript";
scriptControl.AddCode(sCode);
try
{
string str = scriptControl.Eval(sExpression).ToString();
return str;
}
catch (Exception ex)
{
string str = ex.Message;
}
return null;
}