一个关于预编译和动态编译的问题

china91chen 2017-07-25 11:20:07
是这样的,我一直以来都是用记事本写的页面,把代码和html写在一个文件里,而不是分开写在.aspx和.aspx.cs文件里
我都是这种格式:
<%@ Page Language="VB" %>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.Sqlclient"%>

<script language="vb" runat="server">


Sub uad(ByVal sender As Object, ByVal e As EventArgs)

Dim i As Int32
Dim con As SqlConnection
Dim strcmd As String
Dim cmd As SqlCommand
i = Request("favtpid")

con = New SqlConnection(ConfigurationSettings.AppSettings("books"))
strcmd = "insert into fav (favtpid,favt,favadd) values (@favtpid,@favt,@favadd)"
cmd = New SqlCommand(strcmd, con)
cmd.Parameters.Add("@favtpid", SqlDbType.Int).Value = i
cmd.Parameters.Add("@favt", SqlDbType.VarChar).Value = nm.Text
cmd.Parameters.Add("@favadd", SqlDbType.VarChar).Value = addr.Text

con.Open()
cmd.ExecuteNonQuery()
con.Close()

Response.Redirect("fave.aspx?favtpid=" & i)


End Sub

Sub retbt(ByVal sender As Object, ByVal e As EventArgs)
Dim i As Int32
i = Request("favtpid")
Response.Redirect("fave.aspx?favtpid=" & i)




End Sub
</script>

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta charset="utf-8" />
<title></title>
</head>
<body style="font-size:13px;">
<form id="form1" runat="server" autocomplete="off">

<div>
<br><br>网站名称<asp:textbox ID="nm" runat="server" Style="width:260px;"/><br><br>网站地址<asp:textbox ID="addr" runat="server" text="http://" Style="width:260px;"/><br><br><asp:button ID="addradd" runat="server" Text="添加网址" OnClick="uad"/>  <asp:button ID="ret" runat="server" Text="返回" OnClick="retbt"/>


</div>

</form>
</body>
</html>
现在有一个ashx文件,是别人帮我写的,但是分成了两个文件Handler1.ashx和Handler1.ashx.cs,而且需要vs编译,感觉用起来不方便,项请各位帮忙帮我把两个文件合并成一个,就像我自己的风格,也可以不用vs编译,谢谢
Handler1.ashx内容:

<%@ WebHandler Language="C#" CodeBehind="Handler1.ashx.cs" Class="web.Handler1" %>

Handler1.ashx.cs内容:

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;

namespace web
{
/// <summary>
/// Handler1 的摘要说明
/// </summary>
public class Handler1 : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
string action = context.Request["action"].ToString();
switch (action)
{
//获取绑定的排序id集合
case "GetOrderIds":
GetOrderIds(context);
break;
//更新绑定的排序id集合
case "UpdateOrderIds":
UpdateOrderIds(context);
break;

}

}

public void GetOrderIds(HttpContext context)
{
int userId = 001; //模拟用户id

string sql = "select * from px where uid = " + userId;

SqlHelper sqlHelper = new SqlHelper();
DataTable dt = sqlHelper.ExecuteQuery(sql);

string orderIds = "";
if (dt.Rows.Count > 0)
{
orderIds = dt.Rows[0]["orders"].ToString();
}


context.Response.Clear();
context.Response.ContentType = "text/plain";
context.Response.Write(orderIds);

}

public void UpdateOrderIds(HttpContext context)
{
int userId = 001; //模拟用户id
string orderIds = context.Request["orderIds"].ToString();

string s_sql = "select * from px where uid = " + userId;
SqlHelper sqlHelper = new SqlHelper();
DataTable dt = sqlHelper.ExecuteQuery(s_sql);

string sql = "";
if (dt.Rows.Count > 0) //判断数据库中是否存在此用户的排序字段。存在更新,否则执行添加
{
sql = "update px set orders='" + orderIds + "' where uid=" + userId;
}
else {
sql = "insert into px values(" + userId + ",'" + orderIds + "')";
}

int i = sqlHelper.ExecuteNonQuery(sql);
context.Response.Clear();
context.Response.ContentType = "text/plain";
if (i > 0)
{
context.Response.Write("1");
}
else
{
context.Response.Write("0");
}
}

public bool IsReusable
{
get
{
return false;
}
}
}
}
...全文
487 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
china91chen 2017-07-26
  • 打赏
  • 举报
回复
引用 4 楼 closurer 的回复:
即使使用了 code behind,也是可以即时编译的。
我把ashx和ashx.cs文件放到iis目录下面后,我首先试着访问了ashx文件,但是提示我 行 1:  <%@ WebHandler Language="C#" CodeBehind="Handler1.ashx.cs" Class="web.Handler1" %> 分析器错误消息: 未能创建类型“web.Handler1”。 我把 <%@ WebHandler Language="C#" CodeBehind="Handler1.ashx.cs" Class="web.Handler1" %>中 Class="web.Handler1"去掉后,又提示 分析器错误消息: 该指令缺少“class”特性。 不知道该怎么办
china91chen 2017-07-26
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
是的,把 ashx 和 ashx.cs 文件传到正确的目录下,就能直接运行,并不用什么 vs 预编译。
我把ashx和ashx.cs文件放到iis目录下面后,我首先试着访问了ashx文件,但是提示我 行 1:  <%@ WebHandler Language="C#" CodeBehind="Handler1.ashx.cs" Class="web.Handler1" %> 分析器错误消息: 未能创建类型“web.Handler1”。 我把 <%@ WebHandler Language="C#" CodeBehind="Handler1.ashx.cs" Class="web.Handler1" %>中 Class="web.Handler1"去掉后,又提示 分析器错误消息: 该指令缺少“class”特性。 不知道该怎么办
china91chen 2017-07-26
  • 打赏
  • 举报
回复
我把ashx和ashx.cs文件放到iis目录下面后,我首先试着访问了ashx文件,但是提示我 行 1: <%@ WebHandler Language="C#" CodeBehind="Handler1.ashx.cs" Class="web.Handler1" %> 分析器错误消息: 未能创建类型“web.Handler1”。 我把 <%@ WebHandler Language="C#" CodeBehind="Handler1.ashx.cs" Class="web.Handler1" %>中 Class="web.Handler1"去掉后,又提示 分析器错误消息: 该指令缺少“class”特性。 不知道该怎么办
china91chen 2017-07-26
  • 打赏
  • 举报
回复
引用 12 楼 closurer 的回复:
[quote=引用 11 楼 china91chen 的回复:] [quote=引用 10 楼 closurer 的回复:] 另外 aspx、ashx 文件的声明标签格式,也是有过变动的。
还希望能够不吝赐教啊,难道这个ashx不经过vs编译就不能用吗[/quote] 不敢当。不过前面说了,这个绝对和 vs 无关,是可以即时编译的。 [/quote] 能否qq联系,帮我看看,如何改动这个文件,我也是急,谢谢,我的qq是2813409277
闭包客 2017-07-26
  • 打赏
  • 举报
回复
引用 11 楼 china91chen 的回复:
[quote=引用 10 楼 closurer 的回复:] 另外 aspx、ashx 文件的声明标签格式,也是有过变动的。
还希望能够不吝赐教啊,难道这个ashx不经过vs编译就不能用吗[/quote] 不敢当。不过前面说了,这个绝对和 vs 无关,是可以即时编译的。
china91chen 2017-07-26
  • 打赏
  • 举报
回复
引用 10 楼 closurer 的回复:
另外 aspx、ashx 文件的声明标签格式,也是有过变动的。
还希望能够不吝赐教啊,难道这个ashx不经过vs编译就不能用吗
闭包客 2017-07-26
  • 打赏
  • 举报
回复
另外 aspx、ashx 文件的声明标签格式,也是有过变动的。
闭包客 2017-07-26
  • 打赏
  • 举报
回复
引用 8 楼 china91chen 的回复:
[quote=引用 4 楼 closurer 的回复:] 即使使用了 code behind,也是可以即时编译的。
我把ashx和ashx.cs文件放到iis目录下面后,我首先试着访问了ashx文件,但是提示我 行 1:  <%@ WebHandler Language="C#" CodeBehind="Handler1.ashx.cs" Class="web.Handler1" %> 分析器错误消息: 未能创建类型“web.Handler1”。 我把 <%@ WebHandler Language="C#" CodeBehind="Handler1.ashx.cs" Class="web.Handler1" %>中 Class="web.Handler1"去掉后,又提示 分析器错误消息: 该指令缺少“class”特性。 不知道该怎么办 [/quote] 我记得 ashx 页面的结构随着 asp.net 版本的更新有过更改,比如我现在使用的 4.0,是不能使用 code behind 的。
闭包客 2017-07-25
  • 打赏
  • 举报
回复
即使使用了 code behind,也是可以即时编译的。
闭包客 2017-07-25
  • 打赏
  • 举报
回复
你遇到的情况并不需要 vs 编译。
-一个大坑 2017-07-25
  • 打赏
  • 举报
回复
下个vs也不会花多少时间吧
丰云 2017-07-25
  • 打赏
  • 举报
回复
这么落后的做法,我搞不来。。。。
  • 打赏
  • 举报
回复
是的,把 ashx 和 ashx.cs 文件传到正确的目录下,就能直接运行,并不用什么 vs 预编译。

62,071

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧