【发布时间】:2021-08-27 06:53:10
【问题描述】:
当我将类型模型的表(提示)中的数据列为 partialView 时,我收到此错误。
InvalidOperationException:传递到 ViewDataDictionary 的模型项的类型为“System.Collections.Generic.List
1[RealEstateAspNetCore3._1.Models.Advertisement]', but this ViewDataDictionary instance requires a model item of type 'System.Collections.Generic.IEnumerable1[RealEstateAspNetCore3._1.Models.Tip]”。
表Tip(类型)包含StatusId作为外键。
Tip.cs 模型类:
[Key]
public int TypeId { get; set; }
public string TypeName { get; set; }
public int StatusId { get; set; }
public virtual Status Status { get; set; }
Status.cs
[Key]
public int StatusId { get; set; }
public string StatusName { get; set; }
public List<Tip> Tips { get; set; }
广告.cs
[Key]
public int AdvId { get; set; }
public string Description { get; set; }
public int StatusId { get; set; }
public int TypeId { get; set; }
[ForeignKey("TypeId")]
public Tip Tip { get; set; }
家庭控制器
public PartialViewResult StatusName1()
{
string statusname1 = _context.Tips.Where(i => i.StatusId == 1)
.FirstOrDefault()
.ToString();
return PartialView(statusname1);
}
局部视图StatusName1:
@model RealEstateAspNetCore3._1.Models.Tip
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">
@Model.Status.StatusName <span class="caret"></span> </a>
Index.cshtml 在索引中我列出了广告表并且效果很好,我使用了如下模型
@model IEnumerable<RealEstateAspNetCore3._1.Models.Advertisement>
在我像这样调用 RenderBoy 上面的部分后在布局中出现错误
<partial name="StatusName1" />
我花了两天时间试图解决这个问题,但错误仍然存在。
谢谢
【问题讨论】:
-
错误很明显你将错误的模型传递给partialview
-
您收到此错误是因为类似
string statusname1 = _context.Tips.Where(i => i.StatusId == 1).FirstOrDefault().ToString();您正在返回string,而您的viewModel期待@model RealEstateAspNetCore3._1.Models.Tip。 -
@MdFaridUddinKiron @Hossein 非常感谢您的反馈。我从
string statusname1 = _context.Tips.Where(i => i.StatusId == 1).FirstOrDefault().ToString();编辑到var statusname1 = _context.Tips.Where(i => i.StatusId == 1).FirstOrDefault();和Tip statusname1 = _context.Tips.Where(i => i.StatusId == 1).FirstOrDefault();,我得到同样的错误 -
你想用这个
string statusname1返回什么?只有StatusName?或者StatusName的列表? -
谢谢你们的反馈,它的工作原理正如 @Pritom Sarkar 兄弟所说,我必须使用组件视图而不是 partialResultView 方法
标签: c# asp.net-core razor