我在C#类文件中使用Web方法(即不是任何Web表单的部分类),我有html文件。我只想使用JQuery AJAX GET和POST方法从html文件中调用web方法。是否有可能做到这一点?这有什么意义吗?或者我必须要使用asp web表单?
答案 0 :(得分:1)
要回答您的问题,请务必首先了解使用网络服务的弊端。网络服务允许我们通过互联网公开任何软件,并允许客户使用它。
在.NET ASMX Web服务中,我们通过使用[WebMethod]
属性修饰方法向外界公开软件。但即使我们应用[WebMethod]
属性,我们的方法也无法通过互联网获得,除非它是inisde a:
希望您现在明白为什么不能简单地在标准C#类中定义[WebMethod]
.Below是一个从简单的html页面调用ASMX Web服务的简单示例:
<强> MyService.asmx:强>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class MyService : System.Web.Services.WebService
{
[WebMethod]
public string GreetUser(string name)
{
return String.Format("Hello {0}",name);
}
}
<强>的index.html:强>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$("#btnCallService").click(function () {
$.ajax({
type: "POST",
url: "MyService.asmx/GreetUser",
contentType: "application/json;charset=utf-8",
data: '{name:"' + $("#txtName").val() + '"}',
dataType: "json",
success: function (data) {
alert(data.d);
},
error: function (errordata) {
console.log(errordata);
}
});
});
});
</script>
</head>
<body>
<input type="text" id="txtName" />
<input type="button" value="Call Service" id="btnCallService" />
</body>
</html>
答案 1 :(得分:0)
您对HTML的Ajax调用看起来与此非常相似
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create( VMSalesman vmsalesman)
{
if (ModelState.IsValid)
{
List<Customer> list = new List<Customer>();
for (int i = 0; i < vmsalesman.CustomerList.Count; i++)
{
if (vmsalesman.CustomerList[i].IsSelected==true)
{
int n = vmsalesman.CustomerList[i].VMCustomerID;
list.Add(db.Customers.Where(c => c.CustomerID == n).First());
}
}
Salesman salesman = new Salesman() {
Name = vmsalesman.Name,
LastName = vmsalesman.LastName,
Location = vmsalesman.Location,
CustomersList = list
};
db.Salesmen.Add(salesman);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(vmsalesman);
}