来自 html 单选按钮的模型变量 bool
Posted
技术标签:
【中文标题】来自 html 单选按钮的模型变量 bool【英文标题】:Model variable bool from html radiobutton 【发布时间】:2021-11-06 22:31:28 【问题描述】:我是 .NET Core 5 的新手,我有一个问题。
是否有可能以某种方式将 html 输入(例如来自无线电引导输入)与 Razor 页面模型中的 bool 变量连接起来?而且,我怎样才能在网站上“打印”变量?因为这种方式#Model.Logical 不起作用。
示例: C# 类模型
public class Logical
public string logicalAtrr get; set;
cshtml.cs:
public class logicalModel : PageModel
public Logical logical get; set;
public void OnGet()
cshtml
@page
@model ...
@
<div class="form-check">
<input class="form-check-input" type="radio" name="flexRadioDefault" id="flexRadioDefault1" asp-for="logical.logicalAtrr" value="true">
<label class="form-check-label" for="flexRadioDefault1">
True/False
</label>
<p>@Model.logical</p>
</div>
如果这个问题是错误的,我真的很抱歉,但我尝试从头开始弄清楚这个 Razor Pages 概念和 Web 开发
另外,当我尝试将 [BindProperty] 设置在 Logical 类之上时,我遇到了一个错误:
错误 CS0592 属性“BindProperty”在此声明类型上无效。它仅对“属性、索引器”声明有效。
非常感谢您的帮助
【问题讨论】:
【参考方案1】:我会为简单的真/假选项使用复选框。如果您使用收音机,您需要提供两个 - 每个州一个。您不能取消选择单个收音机。
复选框应绑定到布尔属性。模型绑定将确保在服务器上分配正确的值。
public class Logical
public bool LogicalAttr get; set;
无需在输入标签助手上设置name
、id
或value
属性。 Razor Pages 会处理这个问题。只需将属性分配给asp-for
属性:
<input asp-for="Logical.LogicalAttr" class="form-check-input" />
BindProperty
属性应分配给公共 PageModel 属性声明:
public class LogicalModel : PageModel
[BindProperty]
public Logical Logical get; set;
public void OnGet()
它不能应用于类,所以这不起作用并且会引发你提到的编译器错误:
[BindProperty]
public class Logical
...
更多阅读在这里(我的网站,顺便说一句): 复选框:https://www.learnrazorpages.com/razor-pages/forms/checkboxes 收音机:https://www.learnrazorpages.com/razor-pages/forms/radios 模型绑定:https://www.learnrazorpages.com/razor-pages/model-binding
【讨论】:
是的,您的网站很棒!烘焙教程可能是我发现的最好的!非常感谢你的工作!但是,很抱歉问,但我真的不明白为什么,当我添加 [BindProperty] 时,我得到了这个错误消息?错误 CS0592 属性“BindProperty”在此声明类型上无效。它仅对“property, indexer”声明有效。你能给我一个简短的解释或进一步的参考吗?提前谢谢! 您不能将BindProperty
属性应用于类。您改为将其应用于 PageModel 属性声明。我已经更新了答案以增加清晰度。以上是关于来自 html 单选按钮的模型变量 bool的主要内容,如果未能解决你的问题,请参考以下文章