【问题标题】:Pass AngularJS parameter to ActionResult method将 AngularJS 参数传递给 ActionResult 方法
【发布时间】:2017-08-29 13:38:41
【问题描述】:

我有谷歌并尝试了很多不同的解决方案来解决这个问题,但都没有奏效。这是据我所知。我尝试使用Action Link 和锚标记传递它。尝试从ActionResult 中的网址捕获它。这个锚标签产生正确的网址

HTML

    <a class="link btn btn-default" ng-href="@Url.Action("CloseProject", "Home")?id={{item.ID}}">@Resource.CloseProjectButton</a>

C#

public ActionResult CloseProject()
    {
        Guid id = new Guid(Request["id"]);

            _fastaSamarbetenRepo.UpdatePropertyBagItemStatusToClosed(id);

        return RedirectToAction("Projekt");
    }

我做错了什么?

【问题讨论】:

  • 我建议对任何更新数据的代码使用 HttpPost 操作。
  • 您的具体问题是什么?如果您的网址正确生成,缺少什么?
  • 网址看起来正确。但永远不会碰到控制器。我也无法调试。这真的很糟糕。我遇到了 SharePoint 调试器未附加到项目的问题。
  • 当你点击链接时,发生了什么?
  • 当我点击链接时,页面会按原样刷新。这意味着它正在通过控制器。奇怪的是状态码没有改变。我有一个错误通知系统,可以过滤错误并以用户友好的方式向用户显示。但它什么也没显示。我真的必须让调试器工作。

标签: c# angularjs asp.net-mvc parameter-passing


【解决方案1】:

您应该使用new 关键字传递parameter

@{
 var url = Url.Action("CloseProject", "Home", new { id = "{{item.ID}}"});
 url = HttpUtility.UrlDecode(url);
}

并使用data-ng-href

<a class="link btn btn-default" data-ng-href="@url">@Resource.CloseProjectButton</a>

【讨论】:

  • 谢谢。让调试器瞬间工作,结果控制器获得了 GUID。问题出在其他地方所以谢谢先生!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 1970-01-01
  • 2016-05-05
  • 1970-01-01
相关资源
最近更新 更多