【发布时间】:2017-09-06 05:46:21
【问题描述】:
我们可以从 html 页面调用类中的 C# 方法吗? 我有一个类名 Crud.cs
public class Crud
{
public String generateFiles(String name)
{
return(generateHtml(name));
}
private String generateHtml(String name)
{
var filename = "C:\temp\"" + name + ".html";
try
{
FileStream fs = new FileStream(filename, FileMode.Create);
return "True";
}
catch(Exception e)
{
return e.ToString();
}
}
}
我想从 html 页面调用此方法。我使用的是 html 页面而不是 asp 页面。是否有可能在不使用 ajax 的情况下调用,或者如果 ajax 也可以调用。
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script src="http://ajax.microsoft.com/ajax/jQuery/jquery-3.2.1.js" type="text/javascript"></script>
</head>
<body>
<div style="align-content:center;">
<input type="text" id="HtmlName" />
<button id="btn_gen_html" onclick="createHtml()">Generate</button>
</div>
<div id="Msg"></div>
<div id="feedbackMsg"></div>
<script>
function createHtml() {
var name = document.getElementById("HtmlName").value;
$.ajax({
type: "POST",
url: "Crud.cs/generateFiles",
data: { name } ,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (val) {
alert(val);
if (val == 0) {
$("#feedbackMsg").html("Success");
}
else(val==1)
{
$("#feedbackMsg").html("Sorry cannot perform such operation");
}
},
error: function (e) {
$("#feedbackMsg").html("Something Wrong.");
}
});
}
</script>
</body>
</html>
这是我的代码。在这里,我无法在 crud 类中调用 generateFiles() 方法。我可以这样打电话吗?如果可以的话怎么办?
【问题讨论】:
-
简短回答:你不能。
Crud.cs/generateFiles是 AJAX 调用中的无效 URL(因为 .cs 文件已编译并且您需要返回 HTML/JSON),甚至没有到达 C# 代码。如果您使用的是 ASP.NET MVC,则分配有控制器和操作方法名称的 URL(设置操作方法以返回 JSON 结果)。 -
嗨@TetsuyaYamamoto 感谢您的快速回复.. 但我没有得到你所说的。你能简单解释一下吗
-
试试这个 ProjectName.namespace.c#function。你不能这样调用 .cs 文件
-
@MeghaM 使用将方法更改为静态并放入 [WebMethod]。
-
AJAX 调用 URL 需要有效路由才能与 C# 代码交互,因此不能直接使用 .cs 文件。在 ASP.NET MVC 中启用了 URL 路由,因此您可以使用控制器类名称和操作方法名称来引用 URL。但是,通过上面的设置,没有任何 URL 路由,AJAX 不知道应该采用哪个路由来调用后端 C# 代码。
标签: javascript c# html