【问题标题】:Why i can not use partial classes on asp.net website?为什么我不能在 asp.net 网站上使用部分类?
【发布时间】:2015-06-15 12:37:40
【问题描述】:

我必须使用网站项目并且需要使用部分类。但是使用有问题。

TestPartial.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestPartial.aspx.cs" Inherits="TestPartial" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
   <title></title>
</head>
<body>
   <form id="form1" runat="server">
   <div>

   </div>
   </form>
</body>
</html>

TestPartial.aspx.cs

using System;

public partial class TestPartial : System.Web.UI.Page
{
    public int price = 200;

    partial void Salary();

    protected void Page_Load(object sender, EventArgs e)
    {
       Salary();

       int newPrice = price;
    }
}

TestPartial2.aspx.cs

using System;

public partial class TestPartial : System.Web.UI.Page
{
    partial void Salary()
    {
        price = 400;
    }
}

错误:

错误 1 ​​当前上下文中不存在名称“Salary”

【问题讨论】:

  • 我刚刚在创建一个新的 WebForm 项目时自己尝试过,它应该可以工作。两个部分类文件是否在同一个程序集中?
  • 您确定所有内容都在同一个命名空间中吗?
  • 啊,一个网站。这使得在同一个编译中获得两者变得更加困难。你确定你需要部分?我会寻找另一种解决方案。
  • 您的问题是网站以及它如何编译内容。这与部分冲突。

标签: c# asp.net


【解决方案1】:

您需要在调用方声明Test() 方法。让它public 可能是可能的,但似乎不是一个好主意。

public partial class TestPartial : System.Web.UI.Page
{    
    partial void Test(); // add this line

    protected void Page_Load(object sender, EventArgs e)
    {
        Test();
    }
}


public partial class TestPartial : System.Web.UI.Page
{
    partial void Test()  
    {
         // executed from Page_Load
    }
}

【讨论】:

  • 不,我没有打开一个 aspx 项目。如果有问题,请发布错误消息。
  • 请查看我的问题的编辑。你能试试吗?您的回答可以防止错误,构建但我认为它不起作用
  • 检查您的编辑,Test() 不再存在,我预计 price 现在会出错。
  • 完全使用上面的类内容,我没有错误,我在等待 newPrice 值是 400 但它是 200。这意味着 TestPartial2 没有编译,不是吗?我已经在 Salary 方法上放了一个断点,它不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 2016-12-31
  • 2017-11-19
相关资源
最近更新 更多