【问题标题】:Routing ASP.NET MVC4路由 ASP.NET MVC4
【发布时间】:2015-12-02 00:21:45
【问题描述】:

我有问题,我想是因为我不知道如何在 mvc 中使用路由。

参数字典包含“LawApplication.Controllers.ClientFolderController”中方法“System.Web.Mvc.ActionResult Index(Int32)”的不可为空类型“System.Int32”的参数“clientId”的空条目。可选参数必须是引用类型、可空类型或声明为可选参数。 参数名称:参数

在我的应用程序中,我有一个客户端列表,并且 foreach 客户端具有编辑/删除/详细信息/文件夹。每个客户端都有一个文件夹列表,每个文件夹都有一个文件/文档列表。所以,我有一个控制器 ClientController 和一个 ClientFolderController。当我访问“文件”按钮时,要查看客户端的文件夹列表,我正在使用:

<button class="btn btn-info">@Html.ActionLink("Folders", "Index", "ClientFolder", new { clientId = item.Id }, null)</button>

所以我可以获取该 clientId 的文件夹。 ClientFolderController 看起来像这样:

public ActionResult Index(int clientId)
{
    List<ClientFolder> folder = dbContext.ClientFolders.Where(c => c.ClientId == clientId).ToList();
    return View(folder);
}

当我尝试添加该特定 clientId 的新文件夹时

public ActionResult Create()
{
    return View();
}

[HttpPost]
public ActionResult Create(ClientFolder folder)
{
    using (dbContext)
    {
        folder.ClientId = 2;
        dbContext.ClientFolders.Add(folder);
        dbContext.SaveChanges();
    }
    return RedirectToAction("Index");
}

链接如下所示:http://localhost:55761/ClientFolder?clientId=2

【问题讨论】:

  • 你的错误信息提示item.Idnull
  • ClientFolder.ClientId 是什么类型?它可以为空吗?
  • ClientId 不为空,是来自客户端的外键,输入 int 。

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


【解决方案1】:

您需要在RedirectToAction 中包含clientId

像这样:

return RedirectToAction("Index", new { clientId = folder.ClientId });

【讨论】:

  • 我刚做了,还是不行... return RedirectToAction("Index", folder.ClientId);
  • 我还有一个问题。 (im a newbie.. :/) . How can i pass the clientId, when im 试图创建一个新文件夹?
  • 做同样的事情;在 ActionLink 中传递 clientId(顺便说一下,我不会把它放在按钮中)。
  • ...您还需要更改 Create 操作以接受 clientId 参数。
  • ... 并将 clientId 传递给 Create 视图,它可以包含在表单中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
  • 1970-01-01
  • 2014-04-20
  • 1970-01-01
相关资源
最近更新 更多