Domanda

ottengo questo errore quando invoco la Modifica azione di uno dei miei controllori.

Ecco il codice C # del metodo azione Modifica

   [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit(cedetails detailToEdit)
    {
        validateDetail(detailToEdit);
        if (!ModelState.IsValid)
            return View();

        try
        {
            var originaldetail = (from d in entity1.cedetails
                                  where d.detail_id == detailToEdit.detail_id
                                  select d).FirstOrDefault();
            entity1.ApplyPropertyChanges(originaldetail.EntityKey.EntitySetName, detailToEdit);
            entity1.SaveChanges();
            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

Questo è il metodo validateDetail:

protected void validateDetail(cedetails detailToValidate)
{

    if (detailToValidate.c_name.Trim().Length == 0)
        ModelState.AddModelError("c_name", "C name is required.");
        ModelState.SetModelValue("c_name", ValueProvider["c_name"]);
    if (detailToValidate.a_server.Trim().Length == 0)
        ModelState.AddModelError("a_server", "A server is required.");
        ModelState.SetModelValue("a_server", ValueProvider["a_server"]);
    if (detailToValidate.d_server.Trim().Length == 0)
        ModelState.AddModelError("d_server", "D server is required.");
        ModelState.SetModelValue("d_server", ValueProvider["d_server"]);
    if (detailToValidate.l_server.Trim().Length == 0)
        ModelState.AddModelError("l_server", "L server is required.");
        ModelState.SetModelValue("l_server", ValueProvider["l_server"]);
    if (detailToValidate.url.Trim().Length == 0)
        ModelState.AddModelError("url", "URL is required.");
        ModelState.SetModelValue("url", ValueProvider["url"]);
    if (detailToValidate.s_id.Trim().Length == 0)
        ModelState.AddModelError("s_id", "S ID is required.");
        ModelState.SetModelValue("s_id", ValueProvider["s_id"]);
}

ho l'errore in questa linea:

<%= Html.TextBox("c_name", Model.c_name) %>  

Dettagli eccezione: System.NullReferenceException:. Il riferimento non impostato a un'istanza di un oggetto

Ho cercato per questo errore e successo su diverse soluzioni, ma nessuno di loro ha lavorato per me. Per favore fatemi sapere se questo può essere risolto a tutti. Ho anche aggiungere che ho scelto di nascondere alcune colonne della tabella nella vista, tra cui detail_id, non solo la loro visualizzazione.

È stato utile?

Soluzione

fa la vostra azione Indice impostare il modello? l'azione di modifica non da nessuna parte, quindi se il modello non è impostato nell'azione Index (ala Return (cedetials)) allora il modello sarà nullo.

Altri suggerimenti

Credo blue_fenix ha Apoint nella sua risposta. sembra che non si sta impostando il modello Qui:

if (!ModelState.IsValid)
            return View();

E Qui:

catch
        {
            return View();
        }

È necessario restituire il modello, perché la casella di testo Helper HTML è spectating un modello che posso essere nulla. Su ogni caso, provare a tornare stesso Modello binded:

return View(detailToEdit);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top