gpt4 book ai didi

c# - MVC 错误 : The model item passed into the dictionary is null

转载 作者:可可西里 更新时间:2023-11-01 08:32:33 26 4
gpt4 key购买 nike

我只是想建立一个 View ,但我收到以下错误:

System.InvalidOperationException: The model item passed into the dictionary is null, but this dictionary requires a non-null model item of type 'System.DateTime

现在,我知道为什么会出现这种情况,数据库中的特定字段 空值,但它应该是空值,因为这是稍后编辑的内容。这是我的代码:

Action

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());
}

主视图

<%@ 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>

局部 View

<%@ 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>

在这种情况下,x.Product.SentForRepair 日期留空,因为在提交时,它还没有被送走。我还有其他类似的领域,例如totalCost 等,但是为了简单起见,我没有在此处包括它们。如果我注释掉 SentForRepair 行, View 将与其他信息完美显示。

如果有人能指出正确的方向来解决这个错误,我将不胜感激!! :)

最佳答案

在 Display 模板中,您需要检查是否为 null(在将其强类型化为 DateTime? 之后):

<% if (Model.HasValue) { %>
<%= Html.Encode(Model.Value.ToString("yyyy-MM-dd")) %>
<% } %>

或者如果您只想提供自定义日期格式,您可以删除 FormDateShort 显示模板并使用 [DisplayFormat] 属性装饰您的 View 模型属性:

[DisplayFormat(NullDisplayText = "", DataFormatString = "{0:yyyy-MM-dd}")]
public DateTime? SentForRepair { get; set; }

然后简单地:

<%= Html.DisplayFor(m => m.Product.SentForRepair)%>

关于c# - MVC 错误 : The model item passed into the dictionary is null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4827576/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com