Атрибут BindProperty C # Razor страниц не работает - PullRequest
0 голосов
/ 13 мая 2019

Я начинаю с моей первой страницы Razor и, следуя некоторым примерам, атрибут [BindProperty] не работает ... Я использую MongoDB, поэтому я не использую EntityFramework в моем проекте.

Вот мой класс модели:

public class Student : BaseModel
{
    public string FirstName;
    public string LastName;
}

[Serializable]
public abstract class BaseModel
{
    [JsonProperty(Order = -2)] // appear first
    [BsonRepresentation(BsonType.ObjectId)]
    public virtual string Id { get; set; }
    [DataType(DataType.DateTime)]
    [BsonDateTimeOptions(Kind = DateTimeKind.Local)]
    public DateTime CreatedDate;
}

Вот мой New.cshtml.cs код:

public class NewModel : PageModel
{
    readonly IStudentsCollection studentsCollection;
    [BindProperty]
    public Student Student { get; set; }


    public NewModel(IStudentsCollection studentsCollection)
    {
        this.studentsCollection = studentsCollection;
    }

    public async Task<IActionResult> OnPostAsync()
    {
        await studentsCollection.InsertAsync(Student);
        return RedirectToPage("Index");
    }
}

И, наконец, вот мой New.cshtml код:

<div class="row">
    <div class="col-md-4">
        <form method="post">
            <h4>Add New Student</h4>
            <hr />
            <div asp-validation-summary="All" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="Student.FirstName"></label>
                <input asp-for="Student.FirstName" class="form-control" />
                <span asp-validation-for="Student.FirstName" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="Student.LastName"></label>
                <input asp-for="Student.LastName" class="form-control" />
                <span asp-validation-for="Student.LastName" class="text-danger"></span>
            </div>
            <button type="submit" class="btn btn-info">Save</button>
        </form>
    </div>
</div>

После нажатия кнопки «Сохранить» я получаю метод OnPostAsync, но объект Student имеет все значения null ...

Что мне здесь не хватает?

1 Ответ

1 голос
/ 13 мая 2019

Вам необходимо предоставить set аксессор для вашей собственности:

public string FirstName { get; set; }
public string LastName { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...