cshtml aspfor getter 不工作但是 setter
cshtml aspfor getter not working but the setter
我尝试通过 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;
}
测试显示在文本区域中,但在 OnPost() 中 NameEvent 为 NULL
如果您希望表单值自动绑定到 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"
) 与 属性 名称不匹配,因此模型绑定无法匹配发布到页面 属性 或参数的 name/value 对.
详细了解 model binding to PageModel properties in Razor Pages here。
我发现了我的错误。我需要在 div 周围放置 <form method="post"></form>
。我还需要在 cshtml.cs 中添加 [BindProperty]
并删除 cshtml 中的 name
属性。
感谢迈克 :)
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; }
我尝试通过 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;
}
测试显示在文本区域中,但在 OnPost() 中 NameEvent 为 NULL
如果您希望表单值自动绑定到 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"
) 与 属性 名称不匹配,因此模型绑定无法匹配发布到页面 属性 或参数的 name/value 对.
详细了解 model binding to PageModel properties in Razor Pages here。
我发现了我的错误。我需要在 div 周围放置 <form method="post"></form>
。我还需要在 cshtml.cs 中添加 [BindProperty]
并删除 cshtml 中的 name
属性。
感谢迈克 :)
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; }