Système.InvalidOperationException: Nullable objet doit avoir un value.ASP.NET MVC

Je suis fatigué de réparer cette erreur, mais rien ne fonctionne.

Voici l'erreur:

Système.InvalidOperationException: Nullable objet doit avoir une valeur.
au Système.ThrowHelper.ThrowInvalidOperationException(ExceptionResource
de ressources) au Système.Nullable1.get_Value() at
Finance.Calculator.Presentation.Admin.Areas.HDGS.Controllers.TransactionController.Edit(Int64
TransactionId, String returnURL) in
d:\BuildAgent2\work\83d988abf03ace44\Code\Presentation\Finance.Calculator.Presentation.Admin\Areas\HDGS\Controllers\TransactionController.cs:line
44 at lambda_method(Closure , ControllerBase , Object[] ) at
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase
controller, Object[] parameters) at
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext
controllerContext, IDictionary
2 paramètres) à
Système.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext
controllerContext, ActionDescriptor actionDescriptor, IDictionary2
parameters) at
System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
at
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter
filter, ActionExecutingContext preContext, Func
1 suite) au
Système.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<>c__DisplayClass17.b__14()
au
Système.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext
controllerContext, IList1 filters, ActionDescriptor actionDescriptor,
IDictionary
2 paramètres) à
Système.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext
controllerContext, Chaîne actionName)

Voici mon Code:

public ViewResult Edit(string TId, string returnURL)
    {
        long tid = !string.IsNullOrEmpty(TId) ? Convert.ToInt64(TId) : Convert.ToInt64(Request.QueryString["TId"].ToString());
        var TransactionItem = db.HDGSAccTransaction.SingleOrDefault(t => t.TransactionID.Equals(tid));
        TransactionVM oTrns = null;
        if (!string.IsNullOrEmpty(returnURL))
        {
            TempData["ReturnUrl"] = returnURL;
        }
        if (TransactionItem != null)
        {
            oTrns = new TransactionVM
            {
                TRef = TransactionItem.dimTransaction.TRef,
                Yr = TransactionItem.Yr,
                IcV = (decimal)TransactionItem.IcV,
                OFv = (decimal)TransactionItem.OFv,
                OCBv = (decimal)TransactionItem.OCBv,
                OOBv = (decimal)TransactionItem.OOBv,
                OInv = (decimal)TransactionItem.OInv
            };
        }

        return View(oTrns);
    }

Veuillez Noter: Ce code fonctionne très bien dans l'environnement de développement de Visual Studio, mais pas sur les serveurs lorsqu'il est déployé.

quelle ligne est-il erreur? Juste ne pas jeter de code à nous, d'essayer de pointer des trucs pour aider à utiliser notre temps
Quel est le type de TransactionItem.IcV? si c'est decimal? utilisation GetValueOrDefault au lieu de cast (même pour tous les autres accessoires).
Valamas - AUS: Merci. Mais cela fonctionne très bien dans mon dev machine et pas sur le serveur. C'est pourquoi je n'ai pas de conseils
je suppose que la raison pour laquelle vous obtenez seulement sur votre serveur, c'est que les variables ont des valeurs différentes. Je suppose que vous avez un Nullable<T> qui est null. Puis le cast explicite décimal lève l'exception.

OriginalL'auteur Todd Wilson | 2014-07-03