仅在使用Entity Framework控制器提交后才发布表单

时间:2019-03-11 17:22:05

标签: asp.net-core asp.net-core-mvc entity-framework-core

我创建了这个视图,以便用户可以填写此表单,点击“提交”,然后它将发布到安排游戏的控制器上。然后,控制器将返回请求的结果。

但是我想我可能还缺少一些东西。因为当我导航到页面时,通过此链接:

<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);
}

任何帮助/建议将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

操作链接将发送GET请求。您可以通过两个单独的动作来处理这两个动词。

用于呈现初始表单的GET

MyFileDetails details = recursiveSearch(new File("/path/to/my-test-folder/"));

然后通过POST接受表单提交

[HttpGet]
public IActionResult CreateGamingEvent()
{
    return View();
}