C# 查看can';我找不到模型

C# 查看can';我找不到模型,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有一个模型 class Person { public int id {get;set;} public String name {get;set;} } 在我看来 @model IEnumerable<Project.Models.Person> @foreach (var p in Model){ @Html.TextBox(p.name) } 控制器 public ActionResult Add(){ return View(

我有一个模型

 class Person {
    public int id {get;set;}
    public String name {get;set;}
}
在我看来

 @model IEnumerable<Project.Models.Person>
    @foreach (var p in Model){
    @Html.TextBox(p.name)
    }
控制器

public ActionResult Add(){
return View();
}

任何想法。我正在尝试向视图发送人员列表,以便生成多行条目

您没有从操作方法返回任何要查看的列表。将您的视图更改为

@model Project.Models.Person
@Html.TextBox("name")
public ActionResult Add(){
var objPerson=新列表();
objPerson[0]。name=”“;//因为您希望为表单显示空白文本框。当前它将只显示一个文本框。
返回视图(objPerson);
}
你的行动方法应该是这样的。您没有在视图端传递模型的任何值。因此,它将P(您的模型)设为NULL,并且无法找到
P.name
,因此它给出了
NULL异常
错误


希望它能解决您的问题。

System.NullReferenceException发生,因为您没有从控制器向视图发送任何数据。因此,model的值应该为null,并抛出一个错误

为了克服这个问题,您可以从控制器传递数据,并在视图页面中显示它

控制器

public ActionResult Add(){

var obj=new List<Person>();

//add your Person data to list and return
return View(obj);
}
public ActionResult Add(){
var obj=新列表();
//将您的个人数据添加到列表并返回
返回视图(obj);
}
查看

 @model IEnumerable<Project.Models.Person>
    @foreach (var p in Model){
    @Html.TextBox(p.name)
    }
@model IEnumerable
@foreach(模型中的var p){
@Html.TextBox(p.name)
}

如果要显示多条记录表单,视图应如下所示

@model Project.Models.Person

@using(Html.BeginForm())
{
    @Html.AntiForgeryToken()
    <div id="formData">
        <button type="button" id="Add" onclick="Add();">Add</button>
    </div>
    <button type="submit">Submit</button>
}
<script>
    function Add(){
        document.getElementById("Add").innerHtml += "@Html.EditorFor(m => m.name)";
    }
</script>
@model Project.Models.Person
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
添加
提交
}
函数Add(){
document.getElementById(“Add”).innerHtml+=“@Html.EditorFor(m=>m.name)”;
}
然后可以实现一个post方法

public ActionResult Add()
{
    return View();
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Add(IEnumerable<Person> list)
{
    return View();
}
public ActionResult Add()
{
返回视图();
}
[HttpPost]
[ValidateAntiForgeryToken]
公共操作结果添加(IEnumerable列表)
{
返回视图();
}

请同时添加操作方法代码。添加填充IEnumerable的操作方法,以便我们可以看到缺少的内容。显然名称字段没有填充..仍然给出相同的例外情况您没有从操作方法返回任何列表以查看。检查更新的答案。但我希望视图显示一个表单(多个表单),以便一次输入多个记录。我不想显示任何记录。它应该是列表,因为模型需要IEnumerableIf。如果要显示多个记录的表单,则应使用
@HTML.TextboxFor(model=>model.name)
并将其放入for循环。添加一个
按钮
添加更多行
。你的方法应该是这样的。这样你就无法实现你想要的。
@model Project.Models.Person

@using(Html.BeginForm())
{
    @Html.AntiForgeryToken()
    <div id="formData">
        <button type="button" id="Add" onclick="Add();">Add</button>
    </div>
    <button type="submit">Submit</button>
}
<script>
    function Add(){
        document.getElementById("Add").innerHtml += "@Html.EditorFor(m => m.name)";
    }
</script>
public ActionResult Add()
{
    return View();
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Add(IEnumerable<Person> list)
{
    return View();
}