静态的、强类型的编程对我来说总是感觉很自然,所以一开始当我必须为我的应用程序构建基于 web 的前端时,我拒绝学习 JavaScript (更不用说 HTML 和 CSS)。只要能够编写纯 C # 代码,我愿意做任何事情来解决这个问题,比如重定向到一个页面,只是为了在 OnLoad 事件上执行和操作。
然而,你会发现,如果你要与网站工作,你必须有一个开放的头脑,并开始思考更多的网络导向(也就是说,不要试图做客户端的事情在服务器上,反之亦然)。我喜欢 ASP.NET 网络表单,并且仍然在使用它(以及 车祸) ,但是我要说的是,通过试图让事情变得更简单,并且隐藏客户端和服务器的分离,这可能会让新手感到困惑,并且实际上有时会让事情变得更加困难。
我的建议是学习一些基本的 JavaScript (如何注册事件、检索 DOM 对象、操作 CSS 等) ,你会发现 web 编程更加有趣(更不用说更容易)。很多人提到了不同的 Ajax 库,但是我没有看到任何实际的 Ajax 示例,所以就这样了。(如果您不熟悉 Ajax,那么您只需要发出一个异步 HTTP 请求来刷新内容(或者在您的场景中执行一个服务器端操作) ,而无需重新加载整个页面或执行完整的回发。
客户端:
<script type="text/javascript">
var xmlhttp = new XMLHttpRequest(); // Create object that will make the request
xmlhttp.open("GET", "http://example.org/api/service", "true"); // configure object (method, URL, async)
xmlhttp.send(); // Send request
xmlhttp.onstatereadychange = function() { // Register a function to run when the state changes, if the request has finished and the stats code is 200 (OK). Write result to <p>
if (xmlhttp.readyState == 4 && xmlhttp.statsCode == 200) {
document.getElementById("resultText").innerHTML = xmlhttp.responseText;
}
};
</script>
请求可以是 HTTP-POST 或 HTTP-GET,不一定要发送到网页,但是您可以发送到侦听 HTTP 请求的任何服务,例如 宁静 API。NET MVC 4 Web API 使得设置服务器端 Web 服务来处理请求也变得轻而易举。但是许多人不知道,您也可以将 API 控制器添加到 Web 表单项目中,并使用它们来处理这样的 Ajax 调用。
服务器端:
public class DataController : ApiController
{
public HttpResponseMessage<string[]> Get()
{
HttpResponseMessage<string[]> response = new HttpResponseMessage<string[]>(
Repository.Get(true),
new MediaTypeHeaderValue("application/json")
);
return response;
}
}
Global.asax
然后在 Global.asax 文件中注册 HTTP 路由,这样 ASP.NET 就会知道如何定向请求。