查看无法找到模型

时间:2016-12-30 05:48:17

标签: 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)
    }

但是当我尝试运行应用程序时,我得到了

  

System.NullReferenceException

就行了

`@Html.TextBox(p.name)`

控制器

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

任何想法。我正在尝试将一个人员列表发送到视图,以便我可以生成多行进入。

4 个答案:

答案 0 :(得分:0)

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

@model Project.Models.Person
@Html.TextBox("name")

答案 1 :(得分:0)

       function Validate() {
            var isAllValid = true;
            $('.error').hide();
            $('#error').empty();
            $('.form-group').removeClass('has-error');

            if ($('#FName').val().trim() == "") {
                $('#FName').focus();
                $('#FName').siblings('.error').show();
                $('#FName').parents('.form-group').addClass('has-error');
                isAllValid = false;
            }
            if ($('#Email').val().trim() != "" || $('#Email').val().trim() =="") {

                var expr = /^([a-zA-Z0-9_\-\.]+)@@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
                if (!expr.test($('#Email').val().trim())) {
                    $('#Email').focus();
                    $('#Email').siblings('.error').show();
                    $('#Email').parents('.form-group').addClass('has-error');
                    isAllValid = false;
                }
            }
            return isAllValid;
        }

你的Action方法应该是这样的。您没有在视图中传递模型的任何值。所以它使P(你的模型)为NULL并且无法找到<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="form-group"> <label for="LName" class="col-sm-2 control-label">First Name</label> <div class="col-sm-10"> <input type="text" class="form-control" id="LName" placeholder="Last Name"> <span class="error">**Please provide Last Name...</span> </div> </div> <div class="form-group"> <label for="Email" class="col-sm-2 control-label">Email Address</label> <div class="col-sm-10">因此它会给出public ActionResult Add(){ var objPerson = new List<Person>(); objPerson[0].name = ""; // As you want to display blank textboxes for your Form. currently it will show only one textbox. return View(objPerson); } 错误。

希望它能解决你的问题。

答案 2 :(得分:0)

发生System.NullReferenceException是因为您没有从控制器向视图发送任何数据。因此,模型的值应为null,并且会引发错误。

要解决此问题,您可以从控制器传递数据,并可以在视图页面中显示它。

<强>控制器

public ActionResult Add(){

var obj=new List<Person>();

//add your Person data to list and return
return View(obj);
}

查看

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

答案 3 :(得分:0)

如果要显示多个记录表单,您的视图应该是这样的。

@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>

然后你可以实现一个post方法。

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

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