我有一个模特
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();
}
任何想法。我正在尝试将一个人员列表发送到视图,以便我可以生成多行进入。
答案 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();
}