cshtml aspfor getter не работает, но установщик - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь получить данные ввода через asp-for со страницы cshtml на страницу cshtml.cs.

cshtml

<div class="form-group">
    <label class="col-sm-2 control-label">Name</label>
    <div class="col-sm-10">
        <textarea name="InputNameEvent" asp-for="NameEvent" class="form-control" placeholder="Name"></textarea>
    </div>
</div>

cshtml.cs

[Required]
[MinLength(5)]
[MaxLength(1024)]
public string NameEvent { get; set; }

public string Name2;

public void OnGet()
{
  NameEvent = "Test";
}
 public void OnPost()
 {
     Name2 = NameEvent;
 }

Тест отображается в Textarea, но в OnPost () NameEvent имеет значение NULL

Ответы [ 2 ]

1 голос
/ 04 июля 2019

Я нашел свою ошибку. Мне нужно было положить <form method="post"></form> вокруг div. Также мне нужно было добавить [BindProperty] в cshtml.cs и удалить атрибут name в cshtml. Спасибо Майку:)

cshtml

<form method="post">
<div class="form-group">
    <label class="col-sm-2 control-label">Name</label>
    <div class="col-sm-10">
        <textarea asp-for="NameEvent" class="form-control" placeholder="Name"></textarea>
    </div>
</div>
</form>

cshtml.cs

[Required]
[MinLength(5)]
[MaxLength(1024)]
[BindProperty]
public string NameEvent { get; set; }
0 голосов
/ 03 июля 2019

Если вы хотите, чтобы значения формы автоматически связывались со свойствами PageModel, вы должны украсить свойство атрибутом BindProperty:

[Required]
[MinLength(5)]
[MaxLength(1024)]
[BindProperty]
public string NameEvent { get; set; }

Или вы можете добавить несколько атрибутов, разделенных запятыми:

[Required, MinLength(5), MaxLength(1024), BindProperty]
public string NameEvent { get; set; }

Если вы используете помощники тегов для своих входов, не указывайте атрибут name. Пусть помощник по тегам сгенерирует его автоматически, что обеспечит соответствие публикуемых значений именам свойств. В настоящее время ваш атрибут имени (name="InputNameEvent") не соответствует имени свойства, поэтому привязка модели не может соответствовать паре имя / значение, которая публикуется в свойстве или параметре страницы.

Подробнее о привязке модели к свойствам PageModel в Razor Pages здесь .

...