【问题标题】:Model variable bool from html radiobutton来自 html 单选按钮的模型变量 bool
【发布时间】: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”在此声明类型上无效。它仅对“属性、索引器”声明有效。

非常感谢您的帮助

【问题讨论】:

    标签: c# .net razor-pages


    【解决方案1】:

    我会为简单的真/假选项使用复选框。如果您使用收音机,您需要提供两个 - 每个州一个。您不能取消选择单个收音机。

    复选框应绑定到布尔属性。模型绑定将确保在服务器上分配正确的值。

    public class Logical
    {
        public bool LogicalAttr { get; set; }
    }
    

    无需在输入标签助手上设置nameidvalue 属性。 Razor Pages 会处理这个问题。只需将属性分配给asp-for 属性:

    <input asp-for="Logical.LogicalAttr" class="form-check-input" />
    

    BindProperty 属性应分配给公共 P​​ageModel 属性声明:

    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 属性声明。我已经更新了答案以增加清晰度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 2016-12-27
    相关资源
    最近更新 更多