繁体   English   中英

从ASPX页面调用codeBehind函数的问题

[英]Issues with calling a codeBehind function from the aspx page

因此,大约四年前其他人在Visual Studios 2008中构建的ASP.net项目现在需要更改其一些硬编码值,这是重建它的任务。 我正在使用Visual Studios 2012。

我对ASP没有很好的了解,因为这不是我通常要做的。 我遇到了以下(已编辑)代码问题:

<%@ Page Language="C#" AutoEventWireup="True" 
CodeBehind="CourseList.aspx.cs" Inherits="ah.CourseList" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>

<body>
<form id="form1" runat="server">
<% writeCourseList(); %> <!--Compiler complains -->
</form>
</body>
</html>

Visual Studios表示“名称'writeCourseList'在当前上下文中不存在”

我很困惑,因为writeCourseList是CourseList类中的公共方法。 另外,由于此代码可在实时服务器上运行,因此必须在某一时刻进行编译。 CourseList类:

namespace ah{
    public partial class CourseList: System.Web.UI.Page{
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        public void writeCourseList()
        { //do stuff}
    }
}

任何帮助,将不胜感激。 另外,请随时就如何更好地提出这个问题向我提出建议。 谢谢!

尝试

public string writeCourseList()
{
    return "this is a course list";
}

当您要使用嵌入式asp.net标记时,需要从该方法返回一个字符串。

内联asp.net标记...将它们全部排序(<%$,<%=,<%,<%#等)

但是相反,我不会使用此类classasp样式。 您应该改用Web数据绑定控件,例如GridView, Repeater, ListView,DataList或简单的ListBox

例如:

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
     {
          listBox1.DataSource = getAllListCourses(); // f.e. a DataTable
          listBox1.DataTextField  = "TextColumn";
          listBox1.DataValueField = "IdColumn";
          listBox1.DataBind();
     }
}

您也add手动add ListItems

listBox1.Items.Add(new ListItem("Course-name","ID"));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM