C# 如何从调用的方法中获取值?C

C# 如何从调用的方法中获取值?C,c#,html,asp.net,innerhtml,C#,Html,Asp.net,Innerhtml,我想从我调用的方法中获取字符串的值,这样我就能够使用InnerHtml创建一个列表 下面是一个示例代码 protected void Button1_Click(object sender, EventArgs e) { //MailBorrow(); int count = 0; string[] names = new string[30]; SqlCommand cmdgetnames = new SqlCommand("SELECT Distinct[na

我想从我调用的方法中获取字符串的值,这样我就能够使用InnerHtml创建一个列表

下面是一个示例代码

protected void Button1_Click(object sender, EventArgs e)
{
    //MailBorrow();
    int count = 0;
    string[] names = new string[30];
    SqlCommand cmdgetnames = new SqlCommand("SELECT Distinct[names] FROM Employees", MyConN);
    using (SqlDataReader ReadeR = cmdgetnames.ExecuteReader())
        while (ReadeR.Read())
        {
            names[count] = ReadeR[0].ToString();
            count++;
        }
    foreach (string person in names)
    {
        Method(person);
        Sample.InnerHtml += **INEEDTHISBACK**;
    }
}
private void Method(string person)
{
    string html = "<h2>"+ person +",</h2>";
    SqlCommand cmdgetforPM = new SqlCommand("SELECT [tools] FROM Equipment WHERE owner = '" + person + "'", MyConN);
    using (SqlDataReader ReadeR = cmdgetforPM.ExecuteReader())
        while (ReadeR.Read())
        {
           html+= "<p>"+ Reader[tools].ToString() +"</p><br />"
        }
    **INEEDTHISBACK** = html;
}
我是新来的,如果你认为我的编码不好,请给我一些建议。
谢谢-

为什么不呢?将返回类型更改为string并返回已生成的值。你需要注意的是

SQL查询执行:-您选择了执行查询的最差方法。使用参数化来执行这样的连接查询。 使用StringBuilder代替字符串 修改后的方法如下所示:

private string Method(string person)
{
    StringBuilder htmlBuilder = new StringBuilder();
    string querySql ="SELECT [tools] FROM Equipment WHERE owner = @person"; 
    using (SqlCommand cmdSql = new SqlCommand(querySql, conObject))
    {
        cmdSql.Parameters.Add("@person", SqlDbType.VarChar).Value = person;
        using (SqlDataReader reader = cmdSql.ExecuteReader())
        {               
            htmlBuilder.Append("<h2>"+ person +",</h2>");
            while (reader.Read())
            {
                htmlBuilder.Append("<p>"+ reader[tools].ToString() +"</p><br />");
            }
        }
     }
     return htmlBuilder.ToString();
}

首先将方法的签名更改为返回字符串

 private string Method(string person)
    {
        string html = "<h2>"+ person +",</h2>";
        SqlCommand cmdgetforPM = new SqlCommand("SELECT [tools] FROM Equipment WHERE owner = '" + person + "'", MyConN);
        using (SqlDataReader ReadeR = cmdgetforPM.ExecuteReader())
            while (ReadeR.Read())
            {
               html+= "<p>"+ Reader[tools].ToString() +"</p><br />"
            }
        return html;
    }

可以把它传给另一种方法吗

Class.MyMethod(html);
您的方法:

public static string MyMethod(string input)
{
    // do whatever here
    return input;
}

方法具有返回类型。目前,您的方法使用void,这意味着什么都没有。将其替换为字符串,并使用return关键字返回html

请阅读以下关于C中return关键字的文档


另一个解决方案是使用out参数。

另一个很好的例子是如何将数据层、业务层和表示层混合在一起。当我在几行代码中看到html和SQL时,我会起鸡皮疙瘩。如果下一个投票者能够指定你第一次提到的使用StringBuilder的voteKind of odd的原因,并在下面使用字符串concat在循环中填充InnerHtml。@Corak-Nyerguds:感谢你发现错误,改变了职位
Class.MyMethod(html);
public static string MyMethod(string input)
{
    // do whatever here
    return input;
}