调用代码的问题来自aspx页面的函数

时间:2012-10-26 19:36:42

标签: c# asp.net

因此,大约四年前其他人在Visual Studios 2008中构建的ASP.net项目现在需要改变一些硬编码值,重建它是我的任务。我正在使用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 studio说“当前上下文中不存在名称'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}
    }
}

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

1 个答案:

答案 0 :(得分:1)

尝试

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

如果要使用内联asp.net标记,则需要从方法返回一个字符串。

inline asp.net tags... sorting them all out (<%$, <%=, <%, <%#, etc.)

但我不会使用这个classis asp风格。您应该使用网络数据绑定控件,例如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 ListItems

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