我创建了这个视图,以便用户可以填写此表单,点击“提交”,然后它将发布到安排游戏的控制器上。然后,控制器将返回请求的结果。
但是我想我可能还缺少一些东西。因为当我导航到页面时,通过此链接:
<li><a asp-area="" asp-controller="Schedule" asp-action="CreateGamingEvent">Create Game Schedule</a></li>
我认为它正在尝试立即发布,并且所有内容都为null或为空,并引发错误说明。
但是我不希望它在用户点击“提交”之后才发布。
有没有办法让表单/控制器在用户填写完表单后才尝试发布?
以下是视图:
@model GameScheduler.Models.gameSchedulingEvent
@{
ViewData["Title"] = "CreateGamingEvent";
}
<h2>CreateGamingEvent</h2>
<h4>gameSchedulingEvent</h4>
<hr />
<div>
<div>
<form asp-action="CreateGamingEvent">
<div>
<label asp-for="GameName"></label>
<input asp-for="GameName" />
</div>
<div>
<label asp-for="GameStart"></label>
<input asp-for="GameStart" />
</div>
<div>
<label asp-for="GameEnd"></label>
<input asp-for="GameEnd" />
</div>
<div>
<input type="submit" value="Create" />
</div>
</form>
</div>
</div>
这是控制器方法:
public async Task<IActionResult> CreateGamingEvent(
[Bind("GameName, GameStart, GameEnd")]
GameSchedulingEvent gameSchedulingEvent)
{
result = await client.ScheduleAsync(
gameSchedulingEvent.Name,
gameSchedulingEvent.Start,
gameSchedulingEvent.End);
return View(result);
}
任何帮助/建议将不胜感激。
谢谢!
答案 0 :(得分:1)
操作链接将发送GET请求。您可以通过两个单独的动作来处理这两个动词。
用于呈现初始表单的GET
MyFileDetails details = recursiveSearch(new File("/path/to/my-test-folder/"));
然后通过POST接受表单提交
[HttpGet]
public IActionResult CreateGamingEvent()
{
return View();
}