在剃刀应用程序中将参数从模型传递到控制器

时间:2013-07-02 12:53:39

标签: c# asp.net-mvc razor

我的asp.net mvc4应用程序出了问题:

我正在将两个整数作为参数传递给一个动作:

<a>@Html.ActionLink(s, "Gerer_Sequence", "Travail", new { seq = Model[k][i].Id_séquence , affa = aff.Id_affaire } )</a>

行动是:

public ActionResult Gerer_Sequence(int seq,  int affa)
{
    Session["affaire"] = affa;
    Session["sequence"] = seq;
    return RedirectToAction("Index", "Calendar");
}

问题是参数为null,但其值在模型中为31

那么问题是什么?如何修改我的代码以修复错误?

5 个答案:

答案 0 :(得分:1)

试试这个。

   <td>
                        @Html.ActionLink("EditUser", "Index", new { Id = m.ID,Name = m.Name })
                    </td>


  public ActionResult Index(string Id, string Name)
        {
            var model = new RegisterModel();
            int _ID = 0;
            int.TryParse(Id, out _ID);
            if (_ID > 0)
            {
                RegisterModel register = GetRegisterUserById(_ID);
                model.ID = _ID;
                model.Name = register.Name;
                model.Address = register.Address;
                model.PhoneNo = register.PhoneNo;

            }
            return View(model);
        }

答案 1 :(得分:1)

你只需要改变这个:

new { seq = Model[k][i].Id_séquence , affa = aff.Id_affaire }

到此:

new RouteValueDictionary { { "seq", Model[k][i].Id_séquence }, { "affa", aff.Id_affaire } }

因为您使用的第四个参数是路线值。

答案 2 :(得分:1)

试试这个:

@Html.ActionLink(s, "Gerer_Sequence", "Travail", new { seq = Model[k][i].Id_séquence , affa = aff.Id_affaire }, null )

答案 3 :(得分:1)

  • 删除标记
  • 确保您提供的参数是int值。
  • 之后运行你的应用程序并检查生成的链接,如果值正常则应该没问题。

答案 4 :(得分:0)

我把动作放在同一个控制器中:

@Html.ActionLink("Gerer Sequence", "Gerer_Sequence", new { seq = Model[k][i].Id_séquence , affa = aff.Id_affaire } )