Форма публикации с использованием только кнопок ввода, передающих параметры в действие в ASP. NET Core - PullRequest
0 голосов
/ 28 марта 2020

Я работаю над своей дипломной работой, я делаю простую браузерную игру, и пока у меня есть форма с 3 кнопками, для которой я хочу вызвать одно и то же действие с разными параметрами, это то, что я до сих пор считал:

@using (Html.BeginForm("Gather", "Character", FormMethod.Post, new { @class = "btn-group-vertical mr-2", @role = "group", }))
{
    <h3>Woods:</h3>
    <input type="submit" class="btn btn-secondary" value="Woods of Deloria (90%)" />
    @Html.Hidden("area", "woods")
    @Html.Hidden("type", "deloria")

    <input type="submit" class="btn btn-secondary" value="Woods of Forgotten souls (50%)" />
    @Html.Hidden("area", "woods")
    @Html.Hidden("type", "forgotten souls")

    <input type="submit" class="btn btn-secondary" value="Shadowforest (10%)" />
    @Html.Hidden("area", "woods")
    @Html.Hidden("type", "shadowforest")
}

Мой вопрос заключается в том, как сделать так, чтобы разные кнопки передавали разные типы, все кнопки должны быть в одинаковой форме, иначе это сломает мой css. Я использую скрытый, так как я не хочу, чтобы пользователь мог редактировать значения, которые передаются в качестве параметров, а также я не хочу, чтобы значения передавались в URL.

РЕДАКТИРОВАТЬ: я понял, что @ Html .Hidden не скрывает это от html, какой будет мой подход, если я хочу передать параметры для действия от кнопки, которую пользователь не может редактировать?

РЕДАКТИРОВАТЬ 2: Хорошо, поэтому я добился некоторого прогресса, изменил форму на

<form method="post" class="btn-group-vertical mr-2" role="group">
    <h3>Woods:</h3>
    <input type="submit" class="btn btn-secondary" name="deloria" value="Woods of Deloria (90%)" />

    <input type="submit" class="btn btn-secondary" name="forgotten souls" value="Woods of Forgotten souls (50%)" />

    <input type="submit" class="btn btn-secondary" name="shadowforest" value="Shadowforest (10%)" />
</form>

И мое почтовое действие выглядит так:

[HttpPost]
    public IActionResult Gather(int id)
    {
        var taskName = "";

        if (Request.Form.ContainsKey("deloria"))
        {
            taskName = "deloria";
        }
        else if (Request.Form.ContainsKey("forgotten souls"))
        {
            taskName = "forgotten souls";
        }
        else if (Request.Form.ContainsKey("shadowforest"))
        {
            taskName = "shadowforestD";
        }

        if (string.IsNullOrEmpty(taskName))
        {
            return Json("uh oh");
        }
        else
        {
            return Json(taskName);
        }
    }
}

Я знаю, что это беспорядок, но я найду способ сделать его немного более компактным.

1 Ответ

0 голосов
/ 31 марта 2020

Я хотел бы взглянуть на различные варианты, изложенные здесь:

http://www.binaryintellect.net/articles/c69d78a3-21d7-416b-9d10-6b812a862778.aspx

Если вы используете Razor Pages, а не традиционные MVC, Вы должны взглянуть на методы обработчика:

https://www.learnrazorpages.com/razor-pages/handler-methods

...