Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC5详细信息/使用多键表编辑/删除_C#_Asp.net Mvc 5_Multikey - Fatal编程技术网

C# MVC5详细信息/使用多键表编辑/删除

C# MVC5详细信息/使用多键表编辑/删除,c#,asp.net-mvc-5,multikey,C#,Asp.net Mvc 5,Multikey,MVC5非常新,但很快就开始流行起来。这个小问题一直困扰着我,关于谷歌的信息似乎不多(或者我没有向谷歌提出正确的问题) 我有一个表(文件\u RCPTS\u日志) 此表有多个键(2) 第一个关键点是字段:TRACK\u NMBR(int) 第二个键是字段:TRANS_DT(日期) 创建控制器时,还创建了默认视图。在大多数情况下,它们工作得很好。但是,在尝试使用Edit\Delete\Details链接时,我遇到了HttpNotFound错误 @Html.ActionLink("Edit", "E

MVC5非常新,但很快就开始流行起来。这个小问题一直困扰着我,关于谷歌的信息似乎不多(或者我没有向谷歌提出正确的问题)

我有一个表(文件\u RCPTS\u日志) 此表有多个键(2)
第一个关键点是字段:TRACK\u NMBR(int) 第二个键是字段:TRANS_DT(日期)

创建控制器时,还创建了默认视图。在大多数情况下,它们工作得很好。但是,在尝试使用Edit\Delete\Details链接时,我遇到了HttpNotFound错误

@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ }
@Html.ActionLink("Details", "Details", new {/* id=item.PrimaryKey */ }) 
如果我的桌子只有一把钥匙,这就好了。但我如何传递两把钥匙呢

我在网上找到的几个解决方案对于这样一个简单的行动来说似乎太复杂了。我想我错过了一些明显的东西

这是我的控制器的代码(详细信息)

公共异步任务详细信息(int?id,DateTime id2)
{
if(id==null)
{
返回新的HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
FILE_RCPTS_LOG FILE_RCPTS_LOG=wait db.FILE_RCPTS_LOG.FindAsync(id);
如果(文件\u RCPTS\u LOG==null)
{
返回HttpNotFound();
}
返回视图(文件\u RCPTS\u日志);
}
我尝试了几种传递多个键的方法,但都不起作用。我已经阅读了一些关于使用SPLIT的教程,但是我也不能让它正常工作。这似乎是一件非常简单和常见的事情,因为我认为大多数表都有多个键

有没有一种我看不到的简单方法?我觉得我想得太多了


谢谢

你可以遵循这个。第一个是在ActionLink中,将所有2个键值作为逗号分隔的字符串传入。例如,详细行动:

@Html.ActionLink("Details", "Details", new {id= @item.TRACK_NMBR +','+@item.TRANS_DT});
在ActionController的详细信息中,您需要解析出2个键中的每一个

string[] splitid = id.Split(',');
            FILE_RCPTS_LOG obj = db.FILE_RCPTS_LOG.Find(Convert.ToInt32(splitid[0]),Convert.ToDateTime(splitid[1]));
或者,您可以传输2个参数作为解决方案:

@Html.ActionLink("Details", "Details", new {id= @item.TRACK_NMBR, id2 =@item.TRANS_DT});

public async Task<ActionResult> Details(int? id, DateTime id2)
{
FILE_RCPTS_LOG obj = db.FILE_RCPTS_LOG.Find(id, id2);
}
@Html.ActionLink(“详细信息”,“详细信息”,新的{id=@item.TRACK\u NMBR,id2=@item.TRANS\u DT});
公共异步任务详细信息(int?id,DateTime id2)
{
FILE\u RCPTS\u LOG obj=db.FILE\u RCPTS\u LOG.Find(id,id2);
}

记住钥匙的顺序很重要。希望能帮上忙,我的朋友

假设将视图传递给模型,只需在操作链接中返回模型即可。然后你将拥有你需要知道的一切,包括两个主键

嗨,汤姆32!谢谢你的回复。我按照你的描述修改了ActionLink。此时,我得到了一个即时错误,即不能将运算符“+”与Int和DateTime一起使用。@ExecChef。Tr:id=@item.TRACK\u NMBR.ToString()+,“+@item.TRANS\u DT.ToString()完美!最后一件事。现在,回到我的控制器里。添加解析后,我收到一个不同的错误。错误:“int?”不包含“Split”的定义,并且找不到接受第一个“int”类型参数的扩展方法“Split”(是否缺少程序集或引用?)。我是否需要添加引用以使用拆分?或者我的课上有错误。公共异步任务详细信息(int?@ExecChef):更改详细信息(字符串id)。感谢Tomato32。差不多了。此时,我收到一个“潜在危险的请求。从客户端(:)检测到路径值。”错误。这是url字符串的内容:。它应该通过的参数是轨道Nmbr:62 Trans\U Dt:2013-10-01@Ibraham马鲁夫:谢谢你的回复。我认为你的答案对将来的使用是有益的,我将学习如何做到这一点,因为它似乎足够简单。非常感谢。
@Html.ActionLink("Details", "Details", new {id= @item.TRACK_NMBR, id2 =@item.TRANS_DT});

public async Task<ActionResult> Details(int? id, DateTime id2)
{
FILE_RCPTS_LOG obj = db.FILE_RCPTS_LOG.Find(id, id2);
}