【问题标题】:Fails to execute index action无法执行索引操作
【发布时间】:2010-12-12 02:30:24
【问题描述】:

我在 MVC ASP.NET 项目中遇到问题。 我使用 LINQ 技术。当我想向表中插入一条记录时,会显示此错误。尽管执行了插入操作:**

错误:

“/”应用程序中的服务器错误。这 参数字典包含一个空 参数“id”的条目 不可为空的类型“System.Int32” 方法'System.Web.Mvc.ActionResult 索引(Int32)'在 'MVCJahan_oil.Controllers.getehController'。 可选参数必须是 引用类型,可为空的类型,或者是 声明为可选参数。 参数名称:参数 描述:未处理的异常 在执行过程中发生 当前的网络请求。请查看 堆栈跟踪以获取有关的更多信息 错误及其起源 代码。

插入(创建)的控制器方法:

public ActionResult Index(int id)
{
    var query= from gete in l_class.getehs where gete.request_no == id select gete;
    this.Session["req_no"] = id; 
    return View(query.ToList());
}


[HttpPost]
public ActionResult Create([Bind(Exclude = "id")]geteh gte)
{
    try
    {

        l_class.getehs.InsertOnSubmit(gte);
        l_class.SubmitChanges();
        return RedirectToAction("Index", new { id = System.Convert.ToInt32  (Session["req_no"].ToString()) });
    }
    catch
    {
        return View();
    }
}

【问题讨论】:

  • 您可能希望更新您的问题标题,使其更具描述性...

标签: asp.net-mvc


【解决方案1】:

您的控制器需要一个名为 idint,但没有得到。如果整数可以为空,那么您应该改用int? 参数。

代替

public ActionResult Index(int id) {
}

你应该使用

public ActionResult Index(int? id) {
}

改为。

如果 id 应该存在并且您使用的是 PRG 模式,请务必在使用 return RedirectToAction("Index", new { id = 1 }); 提交表单后重定向时包含 id(仅将 1 替换为实际值)。

【讨论】:

  • 谢谢。但我的问题没有解决。请注意我的问题的变化。
  • 只是补充一点,您遇到的问题是您的 Index 方法需要一个不可为空的参数(id)并且您没有像@Jarret 正确指出的那样设置它.当您访问 URL 时,例如MySite/MyController 它将调用 MyController 中的 Index 操作,在您的情况下,它将通过上述异常,因为它需要一个整数参数。您需要 a) 将 Index 操作中的 id 参数更改为可为空或 b) 始终在 URL 中传递一个 id,例如我的站点/我的控制器/我的 ID
  • @Bahareh,我在上一条评论中解释了需要做什么。您要么更新 Index 方法以具有可为空的参数(请参阅@Jarrett 的答案),要么确保在导航到该特定操作时始终传递 ID。
【解决方案2】:

试试这个:

RedirectToAction(new {controller="Home", action="Index", id=123});

自行替换控制器、动作和id。 如果错误仍然存​​在,请检查您的会话值。

【讨论】:

    【解决方案3】:

    问题可能出在执行插入后调用的控制器方法中。该方法需要一个 int id 参数,但路由到该方法的重定向没有传递 id 值。

    【讨论】:

      猜你喜欢
      • 2022-11-05
      • 1970-01-01
      • 2015-12-31
      • 1970-01-01
      • 2018-07-07
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      相关资源
      最近更新 更多