gpt4 book ai didi

c# - 更改 ASP .NET MVC 模型类中的主键名称

转载 作者:行者123 更新时间:2023-11-30 22:41:07 25 4
gpt4 key购买 nike

我的模型类是:

 public class Contracts
{
public int ContractId { get; set; }
public string contract { get; set; }
}

添加它的 Controller :

public ActionResult Index()
{
var contracts = from c in db.Contracts
select c;
return View(contracts.ToList());
}

强类型 View 返回:

@foreach (var item in Model) {
<tr>
<td>
@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
</td>
<td>
@item.ContractId
</td>
<td>
@item.contract
</td>
</tr>
}

最初基表的主键称为ID。然后我将其更改为 ContractId 以便在外键中使用。

如何设置模型主键以便 View 能够识别它?

UPDATE1:我正在使用 EntityFramework 4

UPDATE2:Brian 提供的答案确实正确地手动分配了 key 。要解决我的问题,需要将表从“契约(Contract)”重命名为“契约(Contract)”。我还将该表中的“契约(Contract)”字段重命名为“名称”。然后我删除了“契约(Contract)”模型类并将其重新创建为“契约(Contract)”。 VIEW 文件夹已重命名为 Contract。我的猜测是命名约定破坏了主键的代码识别。

最佳答案

假设 Controller 上的操作方法是这样的:

public ActionResult Details(int id){
// retrieve contract and generate view
}
public ActionResult Edit(int id){
// retrive contract and generate view
}
public ActionResult Delete(int id){
// delete contract
}

那么你的 View 应该是这样的:

@foreach (var item in Model) {    
<tr>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ContractId }) |
@Html.ActionLink("Details", "Details", new { id=item.ContractId }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ContractId })
</td>
<td>@item.ContractId</td>
<td>@item.contract</td>
</tr>
}

关于c# - 更改 ASP .NET MVC 模型类中的主键名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4935808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com