【问题标题】:Get null value in parameter in actionresult from actionlink click on different controller actionmethod从actionlink单击不同的控制器actionmethod的actionresult中的参数中获取空值
【发布时间】:2016-12-03 06:50:59
【问题描述】:

我正在使用带有 C# 语言和 MVC 版本 4 的 Visual Studio 2015。

我在 actionlink 点击事件上调用不同控制器上的 actionmethod。

@Html.ActionLink(item.ListingDate.ToString("MM/dd/yyyy"), "MyActionMethod", "ControllerName", item.Id , null)

它正确调用了 actionmethod,但我在 ActionMethod Id 中得到 null 作为值:

public async Task<ActionResult> MyActionMethod(string Id) // it is coming null here
{
      //Mycode
}

【问题讨论】:

  • @StephenMuecke 我之前也尝试过,但得到的值为 null 但现在它来了 神奇的魔法不知道会发生什么,但它正在工作,谢谢

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


【解决方案1】:

您的参数名称是Id,因此您需要创建一个具有该名称的对象

@Html.ActionLink(
    item.ListingDate.ToString("MM/dd/yyyy"),
    "MyActionMethod",
    "ControllerName", 
    new { id = item.Id }, // change this
    null)

【讨论】:

  • 据我所知,我认为我不应该写 id = item.Id 对,我可以直接发送变量 na!可能我错了。
  • 您当前的代码不会添加路由值,因此它只创建../ControllerName./MyActionMethod,而不是../ControllerName./MyActionMethod/someValue
  • 注意我拒绝你编辑 - DefaultModelBinder 不区分大小写 - new { id = item.Id }new { Id = item.Id }new { iD = item.Id }new { ID = item.Id } 都是相同的,并且会正确绑定。
  • ohhh 好的,我明白了,我认为默认情况下发送 id 将作为 ../ControllerName./MyActionMethod/someValue 但无论如何都是错误的,先生,我明白了你的意思,还有编辑拒绝点也是。
  • 解释第一点——第四个参数是object,该方法为对象的每个属性生成一个路由值或查询字符串值。在您的情况下,您的对象是 intint 没有属性,因此不会生成任何内容。如果您要将其更改为string id 并将第四个参数设置为(例如)“padhiyar”,它将生成...?length=8,因为string 有一个名为length 的属性,并且“padhiyar”中有 8 个字符跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多