无法将方法组分配给匿名类型属性MVC c#Visual Studios

时间:2017-02-25 18:06:11

标签: c# asp.net-mvc visual-studio

我无法将方法组分配给匿名类型属性,这里是代码段。

@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类的样子

2 个答案:

答案 0 :(得分:1)

因为IdKlone类的字段。您需要将其转换为公共财产。

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