Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不使用中继器或其他控件将数据显示到ASPX页面_C#_Asp.net_Visual Studio 2010 - Fatal编程技术网

C# 不使用中继器或其他控件将数据显示到ASPX页面

C# 不使用中继器或其他控件将数据显示到ASPX页面,c#,asp.net,visual-studio-2010,C#,Asp.net,Visual Studio 2010,下面我有一个示例代码片段,可以很好地工作(出于示例目的,我对查询进行了一些修剪)。我想在ASPX文件中显示数据,但我不想使用中继器、datagrid或类似的东西。我应该提到我不是在MVC3工作 在ASP 3.0中,可以使用DO WHILE循环来实现这一点,但我似乎无法在ASPX中使用它。有人可以发布一个代码片段来完成这项工作吗?非常感谢 public void sqlconn2(object sender, EventArgs e) { SqlConnection

下面我有一个示例代码片段,可以很好地工作(出于示例目的,我对查询进行了一些修剪)。我想在ASPX文件中显示数据,但我不想使用中继器、datagrid或类似的东西。我应该提到我不是在MVC3工作

在ASP 3.0中,可以使用DO WHILE循环来实现这一点,但我似乎无法在ASPX中使用它。有人可以发布一个代码片段来完成这项工作吗?非常感谢

    public void sqlconn2(object sender, EventArgs e)
    {
        SqlConnection cn = null;
        cn = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlConn"].ToString());
        cn.Open();
        SqlCommand cmd = new SqlCommand("SELECT DISTINCT submajor.subid FROM subdetails", cn);
        myreader = cmd.ExecuteReader();
    }

    public static SqlDataReader myreader { get; set; }
Edit:如果我将代码直接放入标记中,它就会工作。显然我不想这样做。以下是标记代码的工作示例:

            <%
        System.Data.SqlClient.SqlConnection cn = null;
        cn = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["sqlConn"].ToString());
        cn.Open();
        System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("SELECT DISTINCT submajor.subid FROM subdetails", cn);
        myreader = cmd.ExecuteReader();
        %>
        <% 
        while (myreader.Read())
           {
               if (myreader["subid"] != null)
               {%>
                   <div><%Response.Write(myreader["subid"]);%></div>
               <%}
           }
       %>

不幸的是,这里有一些问题。ASPX(ASP.NETWebForms)是关于使用控件的。任何其他方式都会破坏模型

ASP.NETMVC要求您必须自己动手,而不使用控件

这里的答案不能很快总结出来,但很好,音乐商店教程应用程序是一个非常好的介绍/解释


(根据您最近的编辑,在MVC中,您编写了在标记中显示数据的代码,这是您不想做的,但这才是真正应该做的。常规的ASPX WebForms使用属性等将视图抽象为控件,MVC允许您在视图标记中显示;这是两个最佳选项)

您可以尝试下面的代码

在aspx标记中添加标签控件

<asp:Label id="container" runat="server"/>

在代码隐藏中,在需要的时候使用数据阅读器

 while (myreader.Read())
           {
               if (myreader["subid"] != null)
               {
                   string str = string.Format("<div>{0}</div>",myreader["subid"]);
                   container.Controls.Add(new LiteralControl(str)); //label we added in markup
               }
       }
while(myreader.Read())
{
if(myreader[“subid”!=null)
{
string str=string.Format(“{0}”,myreader[“subid”]);
container.Controls.Add(newliteralcontrol(str));//我们在标记中添加的标签
}
}

遗憾的是,我认为你是对的。我对MVC不太满意(对ASPX不太满意),但我认为我可以从codebehind触发代码。这是不可能的吗?您可以通过创建自己的控件并覆盖
OnRender
。然后,您可以输出您想要的任何内容。但是,要实现一个控件,您应该正确遵循很多指导原则,这使它变得非常复杂,具体取决于您的应用程序。soo close:)“System.Web.UI.WebControls.Literal”不允许子控件。@mynameisno您可以将其更改为标签。我修改了我的帖子。