C# 对象引用未设置为对象的实例。-控制集合

C# 对象引用未设置为对象的实例。-控制集合,c#,asp.net,razor,textbox,webmatrix,C#,Asp.net,Razor,Textbox,Webmatrix,我对Asp.net和网站建设还不熟悉,但我从Webmatrix网页开始,实际上我在我的网站上取得了很大的进步。 但我现在陷入了一段剃须刀代码。我得到一个错误: 对象引用未设置为对象的实例。 一致: foreach(第页控件中的控件c1) 我想这样做的原因是因为我正在以友好的方式创建文本框,每个文本框都有不同的ID,我想遍历所有文本框并将数据插入数据库 任何帮助都将不胜感激 提前感谢,, Dinis。在我看来,您使用的是asp.net网页,而不是MVC,对吗?您要渲染: <input typ

我对Asp.net和网站建设还不熟悉,但我从Webmatrix网页开始,实际上我在我的网站上取得了很大的进步。 但我现在陷入了一段剃须刀代码。我得到一个错误: 对象引用未设置为对象的实例。 一致: foreach(第页控件中的控件c1)

我想这样做的原因是因为我正在以友好的方式创建文本框,每个文本框都有不同的ID,我想遍历所有文本框并将数据插入数据库

任何帮助都将不胜感激

提前感谢,,
Dinis。

在我看来,您使用的是asp.net网页,而不是MVC,对吗?您要渲染:

<input type="text" id="xxxx" />

在我看来,您使用的是asp.net网页,而不是MVC,对吗?您要渲染:

<input type="text" id="xxxx" />

下面的代码创建一个具有可变数量文本字段的表单,并读取其内容并将其存储到列表中

@{
    var num = 3; // number of text fields to create
    List<string> nText = new List<string>();
    if (IsPost)
    {
        for (int i = 0; i < num; i++)
        {
            var name = "txt" + i.ToString();
            nText.Add(Request.Form[name]);
        }
    }
}

<!DOCTYPE html>

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <form method="post">
            @for (int i = 0; i < num; i++)
            {
                var name = "txt" + i.ToString();
                <p>@name
                <input type="text" name="@name" />
                </p>
            }
            <input type="submit" />
        </form>
    </body>
</html>
@{
var num=3;//要创建的文本字段数
List nText=新列表();
如果(IsPost)
{
for(int i=0;i
}

只需稍作更改,您就可以将文本字段值插入表记录。

下面的代码创建一个具有可变数量文本字段的表单,并读取其内容并将其存储到列表中

@{
    var num = 3; // number of text fields to create
    List<string> nText = new List<string>();
    if (IsPost)
    {
        for (int i = 0; i < num; i++)
        {
            var name = "txt" + i.ToString();
            nText.Add(Request.Form[name]);
        }
    }
}

<!DOCTYPE html>

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <form method="post">
            @for (int i = 0; i < num; i++)
            {
                var name = "txt" + i.ToString();
                <p>@name
                <input type="text" name="@name" />
                </p>
            }
            <input type="submit" />
        </form>
    </body>
</html>
@{
var num=3;//要创建的文本字段数
List nText=新列表();
如果(IsPost)
{
for(int i=0;i
}

只需稍作更改,您就可以将文本字段值插入表记录。

发布示例如何将控件添加到页面?不幸的是Razor不使用Web控件。控件作为一个概念是用于WebForms的,
页面
对象仅在WebForm上可用。它给你这个错误是因为你试图访问null
页面上的
控件
属性
objectIt是这样的:@foreach(db.Query中的行(“SELECT*FROM table1”){@row.BC}好的,除了使用WebForm之外,还有什么解决方法吗?@D1N15是的,只需动态构建元素,而不是使用服务器控件。它也可以。举个例子,如何将控件添加到页面?不幸的是Razor不使用Web控件。控件作为一个概念是用于WebForms的,
页面
对象仅可用它会给你这个错误,因为你试图访问null
页面上的
控件
属性
objectIt是这样的:@foreach(db.Query中的行(“SELECT*FROM table1”){@row.BC}好的,除了使用WebForm之外,还有什么解决方法吗?@D1N15是的,只需动态构建元素,而不是使用服务器控件。它也可以工作。对不起,我想我没有解释清楚。我有一个带有提交按钮的表单和两个动态创建的文本框。我所需要的只是插入/更新文本框在数据库中,当用户按“提交”按钮时。为此,我需要遍历页面中的所有文本框,其数量我不知道。@D1N15您不能遍历文本框;Razor中没有文本框控件。您要做的是遍历表单集合。表单集合有键(文本框的ID)并使用Request.Form.Get(“”)获取值。Razor是一种与web表单完全不同的方法。好的。你能告诉我怎么做吗?因为你提到的那行“where”方法不被识别,我无法真正理解如何使用它来实现我所需要的。谢谢。很抱歉,我认为我没有很好地解释它。我有一个带有提交按钮和两个动态创建的文本框的表单。我所需要的是在用户按下提交按钮时在数据库中插入/更新文本框文本。为此我需要遍历页面中的所有文本框,我不知道它们的数量。@D1N15您不能遍历文本框;Razor中没有文本框控件。您要做的是遍历表单集合。表单集合有键(文本框的ID)并使用Request.Form.Get(“”)获取值。Razor是一种与web表单完全不同的方法。好的。你能告诉我怎么做吗?因为你提到的“where”方法行不被识别,我真的不明白如何使用它来实现我需要的。谢谢。我没有使用“name”在输入字段中,因此request.form没有返回任何内容。现在它工作了。谢谢。我在输入字段中没有使用“name”,因此request.form没有返回任何内容。现在它工作了。