【问题标题】:Quering data using linq C# MVC4使用 linq C# MVC 4 查询数据
【发布时间】:2014-08-12 13:31:04
【问题描述】:

我有两张表,一张是卡,另一张是注册数据时间。第一个表保存卡片的数据,第二个保存卡片被扫描的日期和时间的数据。

所以我有一个所有卡片的列表,当我点击卡片时,我想获取卡片被扫描的时间和日期。

所以在控制器中我有这样的动作结果:

public class CardController : Controller
    {
        private readonly ICardDataSource _db;
        public  CardController(ICardDataSource db)
        {
            _db = db;
        }

public ActionResult details(int id)
        {


            var model = _db.Cards.Single(c => c.CardId == id);;


            return View(model);
        }

在索引视图中,我使用以下 html 助手:

<ul>

    @foreach (var card in Model)
    {
        <li>@Html.ActionLink(card.Description, "details", "Card", new { card.CardId} , null);</li>
    }

    </ul>

在详细视图中,我想显示每张卡的注册数据。当我加载时,它说发送的是空引用而不是 int32。

详细视图:

@model Card.Manager.Models.Card

@{
    ViewBag.Title = "detail";
}

<h2>Detail</h2>

@foreach (var e in Model.RegistrationDTs)
{
    @e.RegistrationDateTime
}

【问题讨论】:

  • 您能否提供详细信息视图的内容?
  • 你能告诉我们索引视图的索引代码吗?现在我只看到详细代码。
  • 我添加了详细视图

标签: c# database linq asp.net-mvc-4


【解决方案1】:

链接中的变量名错误。您在控制器操作 int id 中的参数名称必须与您在构建链接时传递的名称相同。

@Html.ActionLink(card.Description, "details", "Card", new { id = card.CardId } , null);

【讨论】:

  • 嗯,和我的不一样吗?
  • 不,它有新的 { id = card.CardId } 您必须说明与您方法中的参数相关的参数!
  • 我收到此消息:参数字典包含方法“System.Web.Mvc.ActionResult details(Int32)”的不可为空类型“System.Int32”的参数“id”的空条目在“Card.Manager.Controllers.CardController”中。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:参数
  • 当您使用new { } 创建匿名对象时,如果您没有指定您要定义的属性的名称,它们将采用您分配给它们的变量的任何名称.在这种情况下,您将 CardId 发送到服务器,并且由于 ASP.NET MVC 模型绑定器使用名称,因此没有任何内容绑定到变量 id,这是您期望在服务器端获得的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多