Post 表单只有输入按钮将参数传递给 ASP.NET Core 中的 Action
Post form with only input buttons passing parameters to Action in ASP.NET Core
我正在写我的论文,我正在制作一个简单的浏览器游戏,到目前为止,我有一个带有 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>
我的 post 操作如下所示:
[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);
}
}
}
我知道这很乱,但我会想办法让它更紧凑一些。
我会看看这里列出的各种选项:
http://www.binaryintellect.net/articles/c69d78a3-21d7-416b-9d10-6b812a862778.aspx
如果您使用的是 Razor Pages,而不是传统的 MVC,您应该查看处理程序方法:
我正在写我的论文,我正在制作一个简单的浏览器游戏,到目前为止,我有一个带有 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>
我的 post 操作如下所示:
[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);
}
}
}
我知道这很乱,但我会想办法让它更紧凑一些。
我会看看这里列出的各种选项:
http://www.binaryintellect.net/articles/c69d78a3-21d7-416b-9d10-6b812a862778.aspx
如果您使用的是 Razor Pages,而不是传统的 MVC,您应该查看处理程序方法: