WebForm路由踩坑
再次接触Asp.Net WebForm已是4年后的今天,源起新入职的公司,一个老的项目。
Web接触的少,那就多动手写写。
WebForm1.aspx
<body>
<div>
<input type="text" id="text" />
<button type="button" id="clickBtn">ClickMe</button>
</div>
<div id="txt"></div>
<script>
$(document).ready(function () {
$("#clickBtn").click(function () {
var userName = $("#text").val();
$.ajax(
{
type: "post",
url: "/Test/WebForm1.aspx",
dataType: "json",
data: { 'userName': userName }
}
).done(function (data) {
$("#txt").html(data);
});
});
});
</script>
WebForm1.aspx.cs
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var list = new List<string>() { "Hello", "World" };
var userName = HttpContext.Current.Request.Form["userName"];
if (userName != null)
{
list.Add(userName);
var data = JsonConvert.SerializeObject(list);
HttpContext.Current.Response.ContentType = "json";
HttpContext.Current.Response.Write(data);
HttpContext.Current.Response.End();
}
}
}
运行,发现点击按钮后,并没有实现我们要的效果,并且发出了两次请求
一次Post,一次Get,什么鬼?就这鸟问题,困扰了一上午,还是细细琢磨,不经意间试了一下这个
$.ajax(
{
type: "post",
url: "/Test/WebForm1",
dataType: "json",
data: { 'userName': userName }
}
).done(function (data) {
$("#txt").html(data);
});
居然就可以了!
那应该是asp.net WebForm觉得.aspx不友好,于是就去掉了,那么帮我们去掉这个过程就是一次重定向过程,怪不得会有一次Get请求。那该是路由设置的问题,于是细细一看。
果然如此,红框中的是默认的配置,实用默认的配置就是永远都要重定向,就算你输入了WebForm1.aspx它都给你重定向成WebForm1。果断设置成Off,问题解决了。