mvc问题,id字段是主键和标识字段

tag5nh1u  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(260)

首先,我是个业余爱好者,还在学习mvc。我正在做一个简单的应用程序,比如地址簿。
我通过实体框架用一个表将我的项目与sql数据库连接起来。sql表中的第一行是id,它是主键和标识字段。当我自动生成详细信息视图并尝试运行它时,出现以下错误:
参数字典包含“akvizicije\u app\u 1\u 6.controllers.homecontroller”中方法“system.web.mvc.actionresult details(int32)”的不可为null类型“system.int32”的参数“id”的null条目。可选参数必须是引用类型、可为null的类型或声明为可选参数。参数名称:参数“

public ActionResult Details(int id)

    {

        Contacts contact = (from k in Context.Contacts

                            where k.idContact == id

                            select k).Single();

        return View(contact);

    }

我知道有一个int id的参数,它不能为空,因为它是主键和标识字段。但我不知道如何解决这个问题。如果有人能帮我。我将非常感激

@{
    ViewBag.Title = "Details";
}

<h2>Details</h2>

<div>
    <h4>Kontakti</h4>
    <hr />
    <dl class="dl-horizontal">
        <dt>
            @Html.DisplayNameFor(model => model.Zupanija)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.Zupanija)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.Opcina)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.Opcina)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.PostanskiBroj)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.PostanskiBroj)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.NazivNaselja)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.NazivNaselja)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.NazivUlice)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.NazivUlice)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.KucniBroj)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.KucniBroj)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.kcbr)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.kcbr)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.Aktivan)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.Aktivan)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.ImeOsobe)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.ImeOsobe)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.PrezimeOsobe)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.PrezimeOsobe)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.KontaktBroj)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.KontaktBroj)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.Email)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.Email)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.Komentar)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.Komentar)
        </dd>

    </dl>
</div>
<p>
    @Html.ActionLink("Edit", "Edit", new { id = Model.idKontakt }) |
    @Html.ActionLink("Back to List", "Index")
</p>```

Its not on english but you will understand.
q9rjltbz

q9rjltbz1#

第一件事是检查你的数据库。你在那里有记录吗?
可以使用find()或firstordefault()函数代替查询
如果在其他控制器@html.actionlink(“edit”,“details”,“controllername”,null,new{id=model.idkontakt})上有它
您可以使用调试器来检查“详细信息”操作中的id值

相关问题