我无法将方法组分配给匿名类型属性,这里是代码段。
@model MineKlonerApp.Models.Klone[]
@{
ViewBag.Title = "Kloner";
}
<h2>@ViewBag.Title</h2>
<div class="row">
@foreach (var klone in Model)
{
<div class="col-md-3">
<h4>@Html.ActionLink(klone.displayText, "Detail", new {id = klone.Id})</h4>
<img src="~/Images/peter-griffin-one.png"
alt="@klone.displayText"
class="img-responsive" />
</div>
}
</div>
&#34; new {id = klone.Id})&#34;是我有问题的地方。正在从另一个名为kloneRepository.cs
的文件中收集klone.Id以下是该代码的示例。
private static Klone[] _klonePerson = new Klone[]
{
new Klone()
{
Id = 1,
Navn = "Peter Griffin",
Alder = 42,
Beskrivelse = "feit og dum",
}
我收到错误,我无法将其分配给匿名,是否有其他方式可以做到这一点,或者有人知道如何解决这个并向我解释,我将不胜感激。
public class Klone
{
internal int Id;
public string Navn { get; set; }
public int Høyde { get; set; }
public string Kjønn { get; set; }
public string displayText
{
get
{
return Navn;
}
}
public string imageFile => Navn.Replace(" ", "-").ToLower() + "-" + ".jpg";
public int Alder { get; internal set; }
public string Beskrivelse { get; internal set; }
}
}
这就是klone.cs类的样子
答案 0 :(得分:1)
因为Id
是Klone
类的字段。您需要将其转换为公共财产。
public class Klone
{
public int Id { set; get; }
// Your other properties goes here
}
您正在使用的Html.ActionLink
辅助方法的重载是期望一个由路由参数组成的对象。您应该在此处使用对象的属性来构建参数。
答案 1 :(得分:0)
我认为我会向answer by @Shyju添加一些额外的信息。虽然他的答案在技术上是正确的(即&#34;使其成为公共财产&#34;)但他关注的部分却不是。事实上它是一个internal
字段,这是一个问题所以你需要做的只是让它public
。当然,使用不动产仍然是首选。总结一下:
internal int Id; //Will NOT work
public int Id; //Will work
internal int Id { get; set; } //Will NOT work
public int Id { get; set; } //Will work