【问题标题】:ActionResult not picking up parameterActionResult 没有获取参数
【发布时间】:2016-03-25 17:21:24
【问题描述】:

网址:

http://localhost:49917/Home/CreateInsured/16

policyID 为空:

// GET: Policy/CreateInsured
[Route("Home/CreateInsured/{policyID}")]
public ActionResult CreateInsured(string policyID)
{
    .... logic ...
    return View();
}

当我看到答案时,我肯定会踢自己

【问题讨论】:

  • 将字符串更改为 int
  • 如果这就是我所做的一切,我会得到一个空引用错误。所以如果我做到了(int policyID?)它不会抛出错误,但它仍然会出现 null
  • 如果您从 javascript 调用它,请使用相同的名称,如果您使用的是 @Html.ActionLink,然后像这样使用它 @Html.ActionLink("Edit", "Edit", new { policyID= item.id})
  • @rashfmnb 你为什么会这么认为?他只是手动输入网址(我希望,因为他没有显示操作链接)
  • 只是在这里猜测一下,因为我不知道这是否可能,但是否可以使用另一条路线而不是显示的路线??

标签: c# asp.net-mvc parameters routes


【解决方案1】:

尝试这样做,将其替换为

[Route("Home/CreateInsured/{policyID}")]

这个

[Route("Home/CreateInsured/{id}")]

以及更改方法中的参数名称

【讨论】:

    【解决方案2】:

    为什么自动生成的评论说 // GET: Policy/CreateInsured。会不会是控制器名称是 Policy 而不是 Home?

    【讨论】:

    • 忽略自动生成的 cmets。它们是不正确的。 (长篇大论)
    【解决方案3】:

    删除:

    [Route("Home/CreateInsured/{policyID}")]
    

    因为您的“RouteConfig.cs”默认配置了路由,即

    url: "{controller}/{action}/{id}"
    

    所以改用这个:

    public ActionResult CreateInsured(string id)
    {
        .... logic ...
        return View();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-08
      • 2021-06-24
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      相关资源
      最近更新 更多