首页 > 解决方案 > 如何通过作为 List 一部分的元素的交互来获取 Id在 .NET 框架中

问题描述

我有一个由 for 循环显示在页面上的元素列表。我想将所选元素的数据放入 asp.net 视图中。我怎么能意识到这一点?

这是控制器的操作,它返回一个元素列表:

public ActionResult MainContent()
{
    SiteContext db = new SiteContext();

    db.SaveChanges();
    var model = db.Posts.ToList();
    return PartialView("MainContent", model);
}

MainContent 的部分视图:

@model IEnumerable<LayersDAL.Entity.Post>

@for (int i = 0; i < Model.Count(); i++)
{
    <ul>
        <li>
            //Here is I'm trying to send element Id of current loop iteration to CurrentPost but something goes wrong :(
            <a class="post-ref" href="@Url.Action("CurrentPost", "Notes", new { Model.ToList()[i].PostId })">
                <h2>@Html.DisplayFor(modelItem => Model.ToList()[i].Title)</h2>
                <p>

                </p>
            </a>
        </li>
    </ul>
}

CurrentPost 操作:

    public ActionResult CurrentPost(int? id)
    {
        SiteContext db = new SiteContext();
        var post = db.Posts.FirstOrDefault(p => p.PostId == id);
        return PartialView(post);
    }

CurrentPost 的部分视图:

<div class="modal-post">

        <div class="modal-post-divs">

            <span class="close">&times;</span>
        </div>
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })

        <div>
            <label>@Model.Title</label>
        </div>

</div> 

浏览器中的元素列表

错误图片

那么,我能做些什么呢?:)

升级版:

谢谢大家,我解决了这个问题:)

标签: c#.netasp.net-mvcmodel-view-controllerarraylist

解决方案


如果未找到任何项目,FirstOrDefault() 将返回 null,因此您的模型将为 null。

 public ActionResult CurrentPost(int? id)
 {
      SiteContext db = new SiteContext();
      var post = db.Posts.FirstOrDefault(p => p.PostId == id);
      return PartialView(post);
 }

你可以在你的视图上检查它以避免错误。

@if(Model != null)
{
  // your code.
}
else
{
<p>No item found </p>
}

推荐阅读