从我的ASPX页面调用C#类

时间:2016-06-08 12:27:01

标签: c# asp.net linq class

我有一个ASPX页面,它是处理设计和代码背后的Web表单。有人告诉我,我在这个页面中的所有类都需要分解成自己的文件。这些文件需要与类名相同。我的ASPX文件是default.aspx,我的类是GetMachineInfo.cs。如何在我的ASPX文件中调用该cs文件,以便它就像我的类在ASPX页面内。如果需要,我会插入一些代码。我删除了一些代码,以便专注于实际问题。如果有一个花括号丢失或其中的东西因为那个。只是想为这个具体问题提供必要的信息。欢呼声。



namespace PVDA.Web
{
    /*
   * LINQ Queries for binding
   * This is calling the wrong information
   * It's calling the n attribute of "srn", not the mach "n"
   * This is going a layer too deep. needs to be mach no srn
   */

    public class Machine
    {

        // Getting all the objects to the machine
        public int snsrN { get; set; }
        public string calctype { get; set; }
        public string sensName { get; set; }


        public static List<Machine> GetMachineInfo(XDocument xDoc, int machineNumber)
        {

            return xDoc.XPathSelectElements("./mmsdata/mill/mach")
                               .Where(x => x.Attribute("n").Value == machineNumber.ToString())
                               .Elements()
                               .Select(x => new Machine
                               {
                                   sensName = x.Value,
                                   snsrN = Convert.ToInt32(x.Attribute("n").Value),
                                   calctype = x.Attribute("calctype").Value
                               }).ToList();

        }
    }
}
&#13;
namespace PVDA.Web
{
    public partial class _default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                // Calling
                ddlBinding();
                NewQuery();
            }

           
           
        }

  public void ddlBinding()
        {
            // Getting the XML file imported in
            const string FILE_PATH = @"MillData.xml";
            // Set the file path
            XDocument xDoc = XDocument.Load(Server.MapPath(FILE_PATH));


            Machine machine = new Machine();


            // Setting a variable to bind the data into the dropdownlists
            var dropDownDataList1 = GetMillInfo(xDoc, "n");
            var dropDownDataList2 = machine.GetMachineInfo(xDoc, 2);

 // Bind Machines to DropDownList2
            DropDownList2.DataSource = machine.GetMachineInfo(xDoc, 2);
            // Set text / value properties
            DropDownList2.DataTextField = "snsrN";
            DropDownList2.DataValueField = "sensName";
            // Bind the contents to be reflected in the UI
            DropDownList2.DataBind();
        }
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:4)

如果您的GetMachineInfo()方法在与表单相同的命名空间中定义(即PVDA.Web),您应该能够按预期调用它,但是需要在类中定义方法而不是直接在命名空间下。

因此,您可能需要考虑将它们标记为static,以允许在不显式实例化您的类实例的情况下调用它们:

public class Machine
{
    public static List<Machine> GetMachineInfo(XDocument xDoc, int machineNumber)
    {
        // Omitted for brevity
    }
}

这样您就可以通过Machine.GetMachineInfo(...)在整个应用程序中调用此方法,您可以在应用程序的任何页面中执行此操作:

// Within your ddlBinding() method
DropDownList2.DataSource = Machine.GetMachineInfo(xDoc, 2);

答案 1 :(得分:0)

为类创建单独的.cs文件。最佳做法是使文件名和类名相同。它很容易跟踪,如果你想修改任何功能,你可以转到文件并修改。

  1. 为类
  2. 创建单独的文件
  3. 删除aspx页面中的类def
  4. 在aspx页面中添加类命名空间
  5. 实例化该课程    防爆。 class CLS = new class();