Html.BeginForm使用Html.HiddenFor将空对象发送到控制器

时间:2019-10-05 13:48:41

标签: asp.net-core razor

这是我的代码

@model MyModel


@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { @enctype = "multipart/form-data" }))
{
    Html.HiddenFor(x => x.ID);

    <label>Name: </label>@Html.EditorFor(x => x.Name);

    <button>Submit</button>
}

由于某种原因,在我的控制器中,我得到MyModel的值为Name = new nameID = null

为什么会这样?

1 个答案:

答案 0 :(得分:0)

仅检查一行代码是问题,但没有出现错误:

@model MyModel


@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { @enctype = "multipart/form-data" }))
{
    Html.HiddenFor(x => x.ID); // This one

    <label>Name: </label>@Html.EditorFor(x => x.Name);

    <button>Submit</button>
}

如果您知道什么可能是问题,那么解决方案很简单,但是如果您不知道,您将无法解决,因为它不会丢失错误。

解决方案是在@之前添加Html.HiddenFor(x => x.ID);

@model MyModel


@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { @enctype = "multipart/form-data" }))
{
    @Html.HiddenFor(x => x.ID); // Changed this one

    <label>Name: </label>@Html.EditorFor(x => x.Name);

    <button>Submit</button>
}

希望这可以帮助某人节省一些时间和痛苦。