Sto solo cercando di costruire una visione, ma sto ottenendo il seguente errore:MVC errore: L'elemento del modello passato nel dizionario è nullo
System.InvalidOperationException: The model item passed into the dictionary is null, but this dictionary requires a non-null model item of type 'System.DateTime
Ora, io so perché questo è in arrivo, il campo particolare nella banca dati è null, tuttavia dovrebbe essere, in quanto questo è qualcosa che viene modificato in un secondo momento. Qui è il mio codice:
azione
public ActionResult View(Int64? Id)
{
ModelContainer ctn = new ModelContainer();
var item = from t in ctn.Items where t.ItemID == Id select t;
return View(Item.First());
}
Vista principale
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Administrator.Master" Inherits="System.Web.Mvc.ViewPage<myApp.Data.Item>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
View
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% Html.RenderPartial("Details", Model); %>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="Header" runat="server">
<h1>Details - <%= Model.MainItem %></h1>
</asp:Content>
Vista parziale
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<myApp.Data.Item>" %>
<%@ Import Namespace="myApp.Supplier.Web.Extensions" %>
<fieldset>
<legend>Information</legend>
<div class="fieldset">
<%= Html.LabelFor(m => m.MainItem)%>
<%= Html.DisplayFor(m => m.MainItem, "FormTextShort")%><br />
<%= Html.LabelFor(m => m.Supplier.Name)%>
<%= Html.DisplayFor(m => m.Supplier.Name, "FormTextShort")%><br />
<%= Html.LabelFor(m => m.ProductCode)%>
<%= Html.DisplayFor(m => m.ProductCode, "FormTextShort")%><br />
<%= Html.LabelFor(m => m.Product.SubmissionDate)%>
<%= Html.DisplayFor(m => m.Product.SubmissionDate, "FormDateShort")%><br />
<%= Html.LabelFor(m => m.Product.SentForRepair)%>
<%= Html.DisplayFor(m => m.Product.SentForRepair, "FormDateShort")%><br />
</div>
</fieldset>
In questo caso, la data x.Product.SentForRepair viene lasciata nulla, poiché al momento dell'invio non è stata ancora inviata. Ho altri campi come questo, ad es. totalCost, ecc. tuttavia per semplicità non li ho inclusi qui. Se commento le linee SentForRepair, la vista viene visualizzata perfettamente con le altre informazioni.
Sarei così grato se qualcuno potesse indicarmi la giusta direzione su come aggirare questo errore !! :)
Ciao Darin, grazie ancora una volta per un altro buon risposta :) Solo un domanda veloce, seguendo questa vista, ho intenzione di consentire all'utente di fare clic su un pulsante Modifica che lo porta a una vista in cui può inserire nei dati mancanti. Pensi che avrò gli stessi problemi in quella vista quando sto provando a visualizzare le caselle di testo EditorFor? – 109221793
Inoltre, solo un po 'più di informazioni, Il modello proviene direttamente dal database, non è un viewmodel, quindi non sarei sicuro di come implementare l'attributo [DisplayFormat()] sopra. – 109221793
@ 109221793, riguardo alla tua prima domanda, non capisco davvero cosa stai chiedendo.Per quanto riguarda la seconda domanda, beh, non importa da dove vengono i tuoi modelli, dovresti sempre usare i modelli di visualizzazione. –