Я работаю над своей дипломной работой, я делаю простую браузерную игру, и пока у меня есть форма с 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);
}
}
}
Я знаю, что это беспорядок, но я найду способ сделать его немного более компактным.