HiddenFor值为空

时间:2017-07-10 10:34:50

标签: asp.net-core

我有一个观点

   @using (@Html.BeginForm())
   {
    <div class="form-horizontal">
        <h4>Person</h4>
        <hr/>
        @Html.ValidationSummary(true)
        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
        <div class="form-group">
            @Html.HiddenFor(x => x.PersonId)
        </div>
        <div class="form-group">
            @Html.LabelFor(m => m.Name)
            @Html.TextBoxFor(m => m.Name)
            @Html.ValidationMessageFor(m => m.Name)
        </div>
        <div class="form-group">
            @Html.LabelFor(m => m.Gender)
            @Html.DropDownListFor(m => m.Gender, Html.GetEnumSelectList(typeof(Gender)))
            @Html.ValidationMessageFor(m => m.Gender)
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default"/>
            </div>
        </div>
    </div>
}

和ViewModel

public class Person
{
    [HiddenInput]
    public int PersonId { get; set; }

    [Required]
    public string Name { get; set; }
    public Gender Gender { get; set; }
}

public enum Gender
{
    Male,
    Female
}

问题是关于PersonId为null的验证投诉。 它在浏览器中呈现(参见,值为空,但应为零)。

<div class="form-group">
     <input data-val="true" data-val-required="The PersonId field is required." id="PersonId" name="PersonId" value="" type="hidden">
</div>
你可以帮忙吗?我使用的是ASP.NET Core 1.8 RC2

1 个答案:

答案 0 :(得分:1)

也许你没有初始化对象(Person)所以值为空。

enter image description here

您可以执行以下操作,但该值不会为空。

enter image description here