Метод действия publi c не найден на контроллере - PullRequest
0 голосов
/ 24 февраля 2020

Я получаю сообщение об ошибке, что мой метод действия не был найден, но не могу понять, что не так. Я искал inte rnet сейчас несколько часов, но до сих пор не нашел решения.

На мой взгляд, у меня есть функция 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>

Я переключаюсь между Textbox и Listbox и, в зависимости от того, что видно, я хочу передать параметр в мой метод.

Мой метод в моем контроллере следующий:

[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 два, отправив мои переменные в метод моего контроллера.

Может кто-нибудь помочь, пожалуйста?

Спасибо!

1 Ответ

1 голос
/ 24 февраля 2020

GetState(string txtAds, string txtRg) имеет два параметра, но вы предоставляете только один. Если вы хотите, чтобы он принимал два, но предоставлял только один, как вы делаете при вызове, сделайте следующее.

Например, для сообщения @Html.Action("GetState", "Rights")', { txtAds: txtBox }:

GetState(string txtAds, string txtRg = "")

Таким образом Вы можете просто отправить txtAds, если хотите, и он должен его достичь.

ajax Я бы порекомендовал:

var json = '{txtAds: "' + txtAds + '"}'

$.ajax({
    url:'@Url.Action("GetState", "Rights")',
    type:'POST',
    data: json,
    contentType: 'Application/json',
    success: function(result){
        // Whatever you want to do next.
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...