前台代码:
<input id="Button1" type="button" value="button" onclick="<%=s('文档区') %>">" />
后台代码
public string s(string str)
{
sqlFormat = "Source.SourceFormat ='" + str + "'";
SetSourcelist();
return "";
}
错误:
“/”应用程序中的服务器错误。
编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。
编译器错误消息: CS1012: 字符文本中的字符太多
源错误:
行 173: <span class="spanStudyFormat" style="top: -16px">编码区</span>
行 174: </p>
行 175: <input id="Button1" type="button" value="button" onclick="<%=s('文档区') %>">" />
行 176: </div>
行 177: </div>
|
源文件: c:\Users\Jia\Desktop\上传\交大服务外包人才培训平台\服务外包人才培训平台\1项目实战\工程\代码\JD2011.SST\Web\home.aspx 行: 175
<input id="Button1" type="button" value="button" onclick="<%=s("文档区") %>" />
我怎么觉得这样写才对呢.....是C#吗?
是asp.net的,我试了用button,还是不行
@晓爽: 呃,input的onclick只能调用页面上的js方法,你想调用后台建议用aspbutton,话说你能把想做什么说一下吗?你这种实现方式好奇怪的说
@焰£天琊: 视频区和后面的东西,其实是两个筛选条件,一个是文件的内容,一个是文件的属性,我想获取这两个值,然后再从数据库里面把值取出来,在下面显示,用aspbutton点击之后总是会刷新页面
@晓爽: 那试着用updatepanel或者ajax呢?
@焰£天琊: ajax找了半天也没用出来
@晓爽: 意思是ajax不会是吗?
@焰£天琊: 嗯,基础太差,看不懂怎么用
@晓爽: http://www.w3cschool.cn/ajax_ajax.html 你可以先去看看这个
@焰£天琊: 嗯,再看了
@晓爽: 这个是jquery的方法,得在你项目里放jquery的包,然后跟后台代码相联系的方式有多种,最简单的是页面内的webservice,加个标签,跟在标签后写方法就行了
@焰£天琊: 老师跟我说也是这样,我现在还在想怎么做,请问下有没有实例,我想看看代码到底怎么写
@晓爽:
[System.Web.Services.WebMethod]
public string getabc(string a) {
return a;
}
var ajaxUrl = "你的页面地址/getabc";
var a = '0';//参数
$.ajax({
type: "POST",
url: ajaxUrl,
data: { action: "changeState", a: a },
dataType: 'text',
success: function (result) {
switch (result) {
case "0":
alert(result)
break;
default:
alert(result)
break;
}
}
});
}
@焰£天琊: 谢啦
@晓爽: 乐意之至
@焰£天琊: 还在吗,这个局部刷新的代码我搞定了,页面的确是局部刷新,请问下后台代码怎么获取值,比如传上去的a
@晓爽: 那个data就是参数列,跟后台方法里的参数名称是一致的,有一个传一个
@焰£天琊: 还有就是,页面局部刷新的很奇怪,每次点击按钮都是跳到页面顶端
@晓爽: 如果是这个样子的话,看看你代码里是不是设置了页面滚动,不然的话还是刷新了页面啊
@焰£天琊: 代码是这样
public partial class home : System.Web.UI.Page
{
public string sqlFormat = "Source.SourceFormat ='视频区'";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) {
SetTeacherList();
SetSourcelist();
}
}
public void SetTeacherList() {
JD2011.SST.BLL.TeacherInfo bllteacher = new BLL.TeacherInfo();
showTeacherList.DataSource= bllteacher.GetSpecialList("TeaImage,TeaName", "TeacherInfo","TeaId<=11");
showTeacherList.DataBind();
}
public void SetSourcelist()
{
SetStudyDatdaTypeList(clientList, " and Source.SourceTypeId=SourceType.SourceTypeId", sqlFormat);
}
public void SetStudyDatdaTypeList(ListView SourceList, string strSourceTypeName,string strSourceFormat)
{
string sqlCondition="Source.SourceId=SourceCollect.SourceId and + Source.UserId=UserInfo.UserId and " ;
JD2011.SST.BLL.Source bllSource = new BLL.Source();
SourceList.DataSource = bllSource.GetSpecialList("UserName,SourceName,COUNT(1) as times ", "UserInfo,Source,SourceType,SourceCollect", sqlCondition + strSourceFormat + strSourceTypeName + " group by SourceName,UserName");
SourceList.DataBind();
}
}
}
应该是局部刷新了把,因为图片都没有重新加载
@晓爽: 按照你后台代码来看,应该是刷新的,可能是因为有图片缓存,要看有没有刷新,在页面加载的时候弹出个框就知道了
@焰£天琊: 是这个框吗
@晓爽: 看不到图片
@焰£天琊: 我点击刷新弹出来一个框,上面写是否提交表单
@焰£天琊: 确认重新提交表单
@焰£天琊: 这个就是刷新了,刚才给你的代码有点问题,换一个给你
html
function getabc() { $.ajax({
//要用post方式
type: "POST",
url: "PurchaserManage.aspx/getabc",
dataType: "json", //dataType: "json",
data: "{ 'ID':'1'}", //把要调用的函数名作为参数传递到服务器就好了 //参数(如果没有参数:null)
//方法所在页面和方法名Data.aspx
contentType: "application/json; charset=utf-8",
success: function (data) {
//返回的数据用data.d获取内容 json
alert("data:" + data.d);
},
error: function (err) {
alert("err:" + err);
}
}); }
后台
[System.Web.Services.WebMethod]
public static string getabc(string ID)
{
if (ID == "1")
{
return ID;
}
else
{
return "0";
}
}
@焰£天琊: ajax的思路是你把参数传到服务器调用目标方法,然后服务器把数据回传过来,你在页面上处理数据,把要展现的东西变成html代码直接放在你想放的位置
@焰£天琊:嗯,知道了
onclick='<%=s("文档区") %>' 改成这样,方法要的是字符串参数,你用单引号会被认为是字符而不是字符串,所以有问题了。
改了之后错误是没有,可是还是没有调用后台的函数啊,不知道怎么回事
@晓爽: 肯定是调用了,只是结果跟你的预期不一致而已,你可以在后台方法里加个断点,跟下代码就知道是哪里的问题了。