Me da el siguiente error, después de leer a través de este

¿Qué es una excepción NullReferenceException, y cómo puedo solucionarlo?

Entiendo lo que es el error pero no se cómo su ser causada o cómo solucionarlo en mi caso,

¿Alguien puede explicar por qué?

De Error:

Sistema.NullReferenceException: referencia a Objeto no establecida como instancia de un objeto.

Error en la línea:

@foreach (var elemento en el Modelo)

Controlador:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using TMTMonitorandCompare.Models;
namespace TMTMonitorandCompare.Controllers
{
public class HomeController : Controller
{
private MetaClone_2Entities db = new MetaClone_2Entities();
public ActionResult Index(string filtername)        
{
var filterresults = from m in db.UserInfoes
select m;            
filterresults = filterresults.Where(x => x.UserCode.ToString().Contains(filtername)).OrderBy(x => x.UserCode);
return View(filterresults);
}
public ActionResult Login()
{
return View("Login");
}
public ActionResult CheckUser()
{
//check username & password
if ((Request.Form["username"] == "user") && (Request.Form["password"] == "pass"))
{
//use forms auth class to set the cookie
FormsAuthentication.SetAuthCookie(Request.Form["username"], true);
//redirect to view
return View("Index");
}
else
{
return View("Login");
}
}
public ActionResult SessionTimeout()
{
return View();
}
public ActionResult ForgotPassword()
{
return View();
}
}
}

Vista:

@model IEnumerable<TMTMonitorandCompare.Models.UserInfo>
@{
ViewBag.Title = "Home Page";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<script>
$(document).ready(function () {
@*Validation for Text fields with name formpart*@
$('#SendRequest').click(function (e) {
var isValid = true;
$("input[type='text'][name='formpart']").each(function () {
if ($.trim($(this).val()) == '') {
isValid = false;
$(this).css({
"border": "1px solid red",
"background": "#FFCECE"
});
}
else {
$(this).css({
"border": "",
"background": ""
});
}
});
if (isValid == false)
e.preventDefault();
else
alert('Thank you for submitting');
});
$("#resultsgo").click(function () {
$("#basicModal2").modal('hide');
});
$("#bckpage").click(function () {
$("#basicModal3").modal('hide');
$("#basicModal2").modal('show');
});
$("#bcktostart").click(function () {
$("#basicModal3").modal('hide');
});
$("#SendRequest").click(function () {
var imei = ("IMEI: " + $("#imei").val());
$('#printImei').html(imei);
var phonenumber = ("Phone Number: " + $("#phoneNumber").val());
$('#printPhoneNumber').html(phonenumber);
var policynumber = ("Policy Number: " + $("#policyNumber").val());
$('#printPolicyNumber').html(policynumber);
});
@*Code for passing code (Should work)*@
$("#SendCodeRequest").click(function () {
var thecode = ("Code: " + $("#theCode").val());
$('#printCode').html(thecode);
});
@*Code for dropdowns ( not working)*@
$('#pickButton').dropdown();
$('#selectionDropdown li').on('click', function () {
$('#dropdown_title').html($(this).find('a').html());
});
});
</script>
<button type="button" class="btn btn-success pull-right" id="logonbutton" onclick="location.href = '@Url.Action("Logon", "Home")'">Logon</button>
<table class="table">
<thead>
<tr>
<th>New Request</th>
<th>Existing Request</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<form class="form-horizontal">
<div class="form-group">
<label class="control-label col-xs-2" for="imei">IMEI:</label>
<div class="col-xs-9">
<input type="text" class="form-control" id="imei" name="formpart" placeholder="IMEI">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-2" for="phoneNumber">Phone Number:</label>
<div class="col-xs-9">
<input type="tel" class="form-control" id="phoneNumber" placeholder="Phone Number">
</div>
</div>
<div class="form-group">
<label for="platform" class="control-label col-xs-2">Policy Organisation:</label>
<div class="col-xs-10">
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown">
Select
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu2">
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">TMT Internals</a></li>
</ul>
</div>
</div>
</div>
<div class="form-group">
<label for="policyNumber" class="control-label col-xs-2">Policy Number:</label>
<div class="col-xs-10">
<input type="text" class="form-control" id="policyNumber" name="formpart" placeholder="Policy Number">
</div>
</div>
<div class="form-group">
<label for="platform" class="control-label col-xs-2">Platform:</label>
<div class="col-xs-10">
<div class="dropdown">
<button class="btn btn-default" id="pickButton" data-toggle="dropdown">
<span id="dropdown_title">Select</span>
<span class="caret"></span>
</button>
<ul class="dropdown-menu" id="selectionDropdown">
<li><a tabindex="-1" href="#">Android</a></li>
<li><a tabindex="-1" href="#">IOS</a></li>
<li><a tabindex="-1" href="#">Windows Phone</a></li>
</ul>
</div>
</div>
</div>
<div class="form-group">
<label for="diagnosticMode" class="control-label col-xs-2">Diagnostic Mode:</label>
<div class="col-xs-10">
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown">
Select
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu3">
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Simple</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Advanced</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Mannual</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Complete</a></li>
</ul>
</div>
</div>
</div>
<div class="form-group">
<div class="col-xs-offset-2 col-xs-10">
<a id="SendRequest" href="#" class="btn btn-success"
data-toggle="modal"
data-target="#basicModal">Create New Request</a>
<button type="submit" class="btn btn-primary">Back to List</button>
</div>
</div>
</form>
</td>
<td>
<div class="form-group">
<div class="col-xs-offset-2 col-xs-10">
<div class="span7 text-center">
<input type="text" class="form-control" id="theCode" placeholder="Please Enter Code">
<input type="submit" value="Go!" class="btn btn-success" id="sendcoderequest" data-toggle="modal"
data-target="#basicModal2" />
</div>
</div>
</div>
@using (Html.BeginForm("Index", "Home", FormMethod.Get))
{
<p>
<label for="platform" class="control-label">Enter Code:</label><br />
@Html.TextBox("filtername")
<input type="submit" value="Filter" />
</p>
}
<div class="modal fade" id="basicModal" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&amp;times;</button>
<h4 class="modal-title" id="myModalLabel">Summary</h4>
</div>
<div class="modal-body">
<span id="printImei"></span><br />
<span id="printPhoneNumber"></span><br />
<span id="printPolicyNumber"></span>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="basicModal2" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&amp;times;</button>
<h4 class="modal-title" id="myModalLabel">Summary</h4>
</div>
<div class="modal-body">
<h2>Results</h2>
<span id="printCode"></span><br />
<div class="pull-right"><button type="submit" class="btn btn-success" id="toggle">Toggle</button> </div>
<table class="table">
<thead>
<tr>
<th></th>
<th>Date</th>
<th>Test Type</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
<input type="checkbox">
</td>
<td>
@Html.DisplayFor(modelItem => item.CreationDateTime)
</td>
<td>
@Html.DisplayFor(modelItem => item.AppModeId)
</td>
</tr>
}
</tbody>
</table>
<div class="form-group">
<div class="col-xs-offset-2 col-xs-10">
<a href="#" class="btn btn-success"
data-toggle="modal"
data-target="#basicModal3" id="resultsgo">Go!</a>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-success">Save changes</button>
<button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<div class="modal fade modal-lg" id="basicModal3" tabindex="-1" role="dialog" aria-labelledby="basicModal3" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&amp;times;</button>
<h4 class="modal-title" id="myModalLabel">Summary</h4>
</div>
<div class="modal-body">
<h2 id="tableheading">Comparison</h2>
<div class="btn-toolbar">
<div class="btn-group pull-left">
<button type="button" class="btn btn-success" id="bcktostart">Back to Start</button>
<button type="button" class="btn btn-success" id="bckpage">Back a Page</button>
</div>
<div class="btn-group pull-right">
<button type="button" class="btn btn-success" id="singlebutton">Single</button>
<button type="button" class="btn btn-success" id="multibutton">Multi</button>
</div>
</div>
<script>
$(document).ready(function () {
$("#Table1").hide()
$("#Table2").hide()
});
$("#multibutton").click(function () {
$("#Table2").hide()
$("#Table1").show()
$("#tableheading").text('Multi-Comparision');
});
$("#singlebutton").click(function () {
$("#Table1").hide()
$("#Table2").show()
$("#tableheading").text('Single-Comparision');
});
</script>
<table class="table table-striped" id="Table1">
<thead>
<tr>
<th>Phone 1</th>
<th>Phone 2</th>
<th>Phone 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>***Result***</td>
<td>***Result***</td>
<td>***Result***</td>
</tr>
</tbody>
</table>
<table class="table table-striped" id="Table2">
<thead>
<tr>
<th>Phone 1</th>
</tr>
</thead>
<tbody>
<tr>
<td>***Result***</td>
</tr>
</tbody>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-success">Save changes</button>
<button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</td>
</tr>
</tbody>

InformationsquelleAutor Baggerz | 2014-09-09

4 Comentarios

  1. 2

    Si lo he entendido todo correctamente, usted consigue un NullReferenceException cuando un mensaje se envía la solicitud a CheckUser acción del controlador. Esta acción no crear un modelo y devuelve una vista sin un modelo aquí:

            //redirect to view
    return View("Index");

    o aquí:

            return View("LogIn");

    Usted puede verificar si su Model no es nulo, en su opinión, como se ha mencionado en otras respuestas, pero el resultado será simplemente evitar una excepción, los usuarios aún ver una tabla vacía. Para mostrar algunos datos que necesita para no volver vistas directamente desde CheckUser método, pero redirigir a CONSEGUIR acciones:

     public ActionResult CheckUser()
    {
    //check username & password
    if ((Request.Form["username"] == "user") && (Request.Form["password"] == "pass"))
    {
    //use forms auth class to set the cookie
    FormsAuthentication.SetAuthCookie(Request.Form["username"], true);
    //redirect to view
    return RedirectToAction("Index");
    }
    else
    {
    return RedirectToAction("Login");
    }
    }
    • Gracias takemyoxygen, esto se ha resuelto mi problema y ahora entiendo por qué 🙂
  2. 1

    Creo que algunos o su filterresults elementos ha UserCode propiedad = null y que produce la excepción. Reemplazar el filtro con

    filterresults = filterresults.Where(x => x.UserCode != null 
    && x.UserCode.ToString().Contains(filtername)).OrderBy(x => x.UserCode);
    • Hola Danica he intentado utilizar el código de arriba, pero no resuelve el error, la tabla contiene columnas con null, pero ambos appmodeid y creationdatetime dispone de datos de cada fila (aunque puede ser null)
    • Más probable es que esta consulta será traducido a la llanura de SQL y no tirar NullReferenceException incluso si algunos de los valores son en realidad nulls
  3. 0
    @if(Model != null) 
    {
    foreach (var item in Model)
    {
    //do your code
    }
    }
    • Este ejemplo de código necesidades decente formato.

Dejar respuesta

Please enter your comment!
Please enter your name here