2017-08-17 2 views
0

ich eine MVC-Anwendung in C# entwickle und mit Blick auf ein Fehler Objekt Verweis auf eine Instanz eines Objekts nicht gesetzt, ist der Datenfluss wie folgt: -Verwendung derselben Ansicht für Get, Post und Aktualisierungsanforderung in MVC

  1. Für eine GET-Anfrage gibt es eine Ansicht zurück und nimmt 2 Eingaben von Benutzer- und POST-Anfrage an den Controller, um 2 Datenfelder unten zu aktualisieren. mit TempData

Ansicht

  • Wenn die Ansicht zurückkehren, sind zwei Felder in derselben Ansicht aktualisiert: (Name = ExpertUser)

    // 2 User input fields 
    <label>R 12.5 bend length:*</label> 
    <input type="number" step="any" min="1" name="htlen" class="form-control fcus"/> 
        @Html.Label("Select Diameter: *") 
        <select name="diam" class="form-control fcus"> 
         <option value="6.5">6.5</option> 
         <option value="8">8</option> 
         <option value="8.5">8.5</option> 
        </select> 
    // 2 display fields to Update from controller 
    @{ var pno = TempData["partDetail"] as PartNo; } 
    @Html.Label("Total Watts :")@pno.htvotls //<--Showing Error here for GET request 
    @Html.Label("Part No :") @pno.htvar //<-- Showing Error 
    

    Die obige Ansicht ist, hat vier Felder, 2 Felder für die Benutzereingabe und 2 Felder zum Aktualisieren der Daten

    Steuerung:

    PartNo PartDetails = pno.PartNoCalc(htlen,diam); 
    TempData["partDetail"] = PartDetails; 
    return View("ExpertUser", "partDetail"); 
    

    PartNoCalc (htlen, Durchm) ist eine Funktion die Details erhalten und Speichern des Objekts in TempData

    Das Problem ist, dass für die GET-Anforderung die bei Ansicht der pno die TempData genannt ruft ist null

    Ich verwende keine stark typisierte Ansicht, da sie nicht in Angular für UI-Rendering integriert werden kann. Danke.

  • +0

    immer überprüfen, ob TempData [ „somevalue“] einen beliebigen Wert hat, bevor sie verwenden, versuchen Sie auch ViewBag oder Viewdata als TempData verwendet, ist kurzlebig und könnte produzieren unerwartete Ergebnisse wie in Ihrem Fall – mahlatse

    +0

    Versuchen Sie mit einem Viewbag und sehen, ob das Problem verschwindet. Da die Tempdata während einer Anfrage ihre Daten verlieren könnten, auch wenn Sie sagen, dass Sie das gleiche Problem haben, ist es immer noch die Referenz nicht gesetzt? oder ist der Wert der tempdata null? – mahlatse

    +0

    Danke für das Update, ich habe ViewData und Sert-Werte verwendet, um null und fügte einige Zeilen aber gleichen Fehler hinzu. if (ViewData ["partDetail"] == null || pno.Equals (null)) {pno = null; pno.htvotls = Convert.ToDecimal (null); } } @ pno.htvotls – NoobOwl

    Antwort

    0

    versuchen mit diesem, hoffe, es wird hilfreich sein für Sie

    @{ var pno = TempData["partDetail"] as PartNo; } 
    @if (pno != null) 
    { 
        @Html.Label("Total Watts :")@pno.htvotls 
        @Html.Label("Part No :") @pno.htvar 
    } 
    
    Verwandte Themen