用JS调用C#方法
我试图创建一个登录页面,该页面根据用户属性(特别是登录到cookie中的用户名和角色)动态更改。登录工作正常;然而,因为我使用的是一种真正的循环调用C#函数的方法,当调用包含内联C#调用的javascript方法时,它跳过该方法中的所有其他代码行,直接调用C#函数 我已经读到,更好的方法是使用Webmethods和jQueryAjax,但是,我无法在我的C#文件中声明Webmethods 我的前端如下所示 Login.aspx用JS调用C#方法,c#,javascript,jquery,asp.net,ajax,C#,Javascript,Jquery,Asp.net,Ajax,我试图创建一个登录页面,该页面根据用户属性(特别是登录到cookie中的用户名和角色)动态更改。登录工作正常;然而,因为我使用的是一种真正的循环调用C#函数的方法,当调用包含内联C#调用的javascript方法时,它跳过该方法中的所有其他代码行,直接调用C#函数 我已经读到,更好的方法是使用Webmethods和jQueryAjax,但是,我无法在我的C#文件中声明Webmethods 我的前端如下所示 Login.aspx <%@ Page Language="C#" AutoEven
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>PAM testing</title>
<link rel="stylesheet" type="text/css" href="Styles/Site.css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="Scripts/JScript.js"></script>
</head>
<body>
<div id="banner">PAM Testing Tool</div>
<div id="content">
<form id="form1" runat="server" style="margin-left: 25%; text-align: center; height: 41px; width: 292px;">
<%--Login ASP Object--%>
<asp:Login ID="Login1" runat="server" onclick="process()"></asp:Login>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" style="text-align: center" ValidationGroup="Login1" />
</form>
<%--TEST AREA--%>
<script type="text/javascript">
function logCookie(){
document.cookie = "user=" + document.getElementById("Login1_UserName").value;// this is the id of username input field once displayed in the browser
}
function testFunction() {
<%=Login1_Authenticate() %>;
}
function process(){
logCookie();
testFunction();
}
</script>
</div>
</body>
</html>
将您的方法创建为web服务(web api很好),然后使用jS ajax调用它,下面是我使用web api和jS的一个示例(这是发布数据,如果您没有要发布的内容,请使用get)
将您的方法创建为web服务(web api很好),然后使用jS ajax调用它,下面是我使用web api和jS的一个示例(这是发布数据,如果您没有要发布的内容,请使用get)
将您的方法创建为web服务(web api很好),然后使用jS ajax调用它,下面是我使用web api和jS的一个示例(这是发布数据,如果您没有要发布的内容,请使用get)
将您的方法创建为web服务(web api很好),然后使用jS ajax调用它,下面是我使用web api和jS的一个示例(这是发布数据,如果您没有要发布的内容,请使用get)
您不能用这种方式从javascript调用服务器端代码。该代码只是将方法的返回值呈现到HTML中。通常,表单中应该有一个按钮,用于回发到服务器。或者,不要在asp:Login控件中使用clientside onclick,而是查看onloggin服务器端事件处理程序。您不能用这种方式从javascript调用服务器端代码。该代码只是将方法的返回值呈现到HTML中。通常,表单中应该有一个按钮,用于回发到服务器。或者,不要在asp:Login控件中使用clientside onclick,而是查看onloggin服务器端事件处理程序。您不能用这种方式从javascript调用服务器端代码。该代码只是将方法的返回值呈现到HTML中。通常,表单中应该有一个按钮,用于回发到服务器。或者,不要在asp:Login控件中使用clientside onclick,而是查看onloggin服务器端事件处理程序。您不能用这种方式从javascript调用服务器端代码。该代码只是将方法的返回值呈现到HTML中。通常,表单中应该有一个按钮,用于回发到服务器。或者,不要在asp:Login控件中使用clientside onclick,而是查看onloggin服务器端事件处理程序。有没有简单的方法将我的C#函数转换为web api?当查看在线参考资料时,他们都建议使用MVC4框架,并从本质上建立一个全新的项目。谢谢您好,web api真的很简单,创建一个web api项目,右键单击控制器添加新控制器,将此测试控制器命名使用带有读写选项的选项web api控制器,查看控制器您将看到一系列方法您将看到api/测试,这是您的URL,要使用上述示例调用post,只需传递一个参数,您可能需要使用[HttpPost]装饰控制器。。。在方法中添加一些东西,比如var x=value,在这个调用上放置一个断点,它来自JS,其余的都是标准的c#从那以后,请注意CORS(跨源资源共享)…空间不足..有没有简单的方法将我的c#函数转换成web api?当查看在线参考资料时,他们都建议使用MVC4框架,并从本质上建立一个全新的项目。谢谢您好,web api真的很简单,创建一个web api项目,右键单击控制器添加新控制器,将此测试控制器命名使用带有读写选项的选项web api控制器,查看控制器您将看到一系列方法您将看到api/测试,这是您的URL,要使用上述示例调用post,只需传递一个参数,您可能需要使用[HttpPost]装饰控制器。。。在方法中添加一些东西,比如var x=value,在这个调用上放置一个断点,它来自JS,其余的都是标准的c#从那以后,请注意CORS(跨源资源共享)…空间不足..有没有简单的方法将我的c#函数转换成web api?当查看在线参考资料时,他们都建议使用MVC4框架,并从本质上建立一个全新的项目。谢谢您好,web api真的很简单,创建一个web api项目,右键单击控制器添加新控制器,将此测试控制器命名使用带有读写选项的选项web api控制器,查看控制器您将看到一系列方法您将看到api/测试,这是您的URL,要使用上述示例调用post,只需传递一个参数,您可能需要使用[HttpPost]装饰控制器。。。在方法中添加一些东西,比如var x=value,在这个调用上放置一个断点,它来自JS,其余的都是标准的c#从那以后,请注意CORS(跨源资源共享)…空间不足..有没有简单的方法将我的c#函数转换成web api?当查看在线参考资料时,他们都建议使用MVC4框架,并从本质上建立一个全新的项目。谢谢您好,web api真的很简单,创建一个web api项目,右键单击控制器添加新控制器,将此测试控制器命名使用带有读写选项的选项web api控制器,查看控制器您将看到一系列方法您将看到api/测试,这是您的URL,要使用上述示例调用post,只需传递一个参数,您可能需要使用[HttpPost]装饰控制器。。。在方法中添加var x=value之类的内容,在此ca上放置断点
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.EnterpriseServices;
public partial class Login : System.Web.UI.Page
{
int status;
int role;
SqlConnection conn;
SqlCommand command;
SqlDataReader reader;
protected string Login1_Authenticate()
{
// create an open connection
conn =
new SqlConnection("Data Source=xxx;"
+ "Initial Catalog=xxx;"
+ "User ID=xxx;Password=xxx");
conn.Open();
//string userName;
//userName = Convert.ToString(Console.ReadLine());
// create a SqlCommand object for this connection
command = conn.CreateCommand();
command.CommandText = "EXEC dbo.SP_CA_CHECK_USER @USER_ID = '"+Login1.UserName+"', @PASSWORD = '"+Login1.Password+"'";
command.CommandType = CommandType.Text;
// execute the command that returns a SqlDataReader
reader = command.ExecuteReader();
// display the results
while (reader.Read())
{
status = reader.GetInt32(0);
}
// close first reader
reader.Close();
//----------
existTest();
return "the login process is finished";
}
public static string GetData(int userid)
{
/*You can do database operations here if required*/
return "my userid is" + userid.ToString();
}
public string existTest()
{
if (status == 0)
{
//login
Session["userID"] = Login1.UserName;
command.CommandText = "EXEC dbo.SP_CA_RETURN_USER_ROLE @USER_ID = '" + Login1.UserName + "'";
reader = command.ExecuteReader();
while (reader.Read())
{
role = reader.GetInt32(0);
}
Session["roleID"] = role;
if (Session["userID"] != null)
{
string userID = (string)(Session["userID"]);
//string roleID = (string)(Session["roleID"]);
}
Response.Redirect("Home.aspx");
}
else
{
//wrong username/password
}
// close the connection
reader.Close();
conn.Close();
return "process complete";
}
}
$.ajax({
type: 'Post',
contentType: "application/json; charset=utf-8",
url: "//localhost:38093/api/Acc/", //method Name
data: JSON.stringify({ someVar: 'someValue', someOtherVar: 'someOtherValue'}),
dataType: 'json',
success: someFunction(), // callback above
error: function (msg) {
alert(msg.responsetext);
}
});