在控制器上未找到公共动作方法

问题描述 投票:0回答:1

我收到未找到我的操作方法的错误,但无法找出问题所在。我现在在互联网上搜索了几个小时,但直到现在都没有找到解决方案。

在我看来,我具有JavaScript函数:

<script type="text/javascript">
function ShowHideAds(button) {
    var dAds = document.getElementById("dAds");

    if (dAds.style.display == "none") {
        dAds.style.display = "block"

        var txtBox = "Visible";
        $.post('@Html.Action("GetState","Rights")', { txtAds: txtBox });
    }
    else {
        dAds.style.display = "none"

        var txtBox = "Hidden";
        $.post('@Html.Action("GetState", "Rights")', { txtAds: txtBox });
    }
   } </script>

我正在文本框和列表框之间切换,并根据可见的内容,将参数传递给我的方法。

我的控制器中的方法如下:

[HttpPost, ActionName("GetState")]
        public ActionResult GetState(string txtAds, string txtRg)
        {
            if (txtAds != null)
                stateTxtAds = txtAds;
            if (txtRg != null)
                stateTxtRg = txtRg;

            return View();
        }

最后是我的路线:

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }

在使用@ Html.Action()方法之前,我有以下代码行:

$.post("/Rights/GetState", { txtAds: txtBox });

但是在部署项目时这不起作用,所以我尝试使用@ Html.Action两个将变量发送到控制器方法。

任何人都可以帮忙吗?

谢谢!

javascript asp.net post model-view-controller
1个回答
0
投票

GetState(string txtAds, string txtRg)有两个参数,但您只提供一个。如果您希望它接受两个,但仅像在通话中一样提供一个,请执行以下操作。

例如:

GetState(string txtAds, string txtRg = "")

通过这种方式,您可以根据需要发送txtAds,并且可以到达。

© www.soinside.com 2019 - 2024. All rights reserved.