【问题标题】:asp.net razor pages: binding checkbox result to datasetasp.net razor pages:将复选框结果绑定到数据集
【发布时间】:2022-11-20 04:15:08
【问题描述】:

我对我要维护的项目完全陌生。

简单的问题:我在我的 cshtml 页面(我知道这是剃刀页面?)中设置了几个复选框和一个标签来测试它后面的绑定类。

我必须工作:

@model Application.Areas.Cms.Models.ProduktBeispielViewModel 
<label>@Model.Test</label>

和虚拟机:

public string Test { get; set; } = "THIS IS A TEST";

让我高兴:这些话显示在我的页面上。所以绑定正在工作。

现在我放置了几个复选框,一旦按下提交按钮,我需要检索每个复选框并查看它们的值是已选中还是未选中(应该不会太难)。

我现在首先尝试将我的 VW 的值(例如 true 或 false)显示到我现有的复选框上。

这就是我所做的:

public bool Test2 { get; set; } = true;

CSHTML:

   <input type="checkbox" name="FoodTrends" value="@Model.Test2" />

我看到我的复选框,但未选中。

1.) 为什么我的简单绑定不起作用? “价值”不是正确的财产吗? 2.) 我如何从此复选框中检索我的值

谢谢你们!

请看看这个:

我正在返回我的模型,Test2 上的值为 false

现在这是我认为的确切代码:

<input type="checkbox" name="FoodTrends" value="@Model.Test2" checked="@Model.Test2" />

结果是复选框被选中,即使该值设置为 false。

我还注意到我的复选框在“&lt;form&gt;”标签内。

编辑:

Razorcode(简要):

@model Application.Areas.Cms.Models.ProduktBeispielViewModel

@{
    ViewBag.PopupHeadline = "Produktbeispiele";
    ViewBag.PopupSubHeadline = Model.Item != null ? Model.Item.NameInCurrentLang : "";
    ViewBag.HideLanguageComparison = true;
}

@section TabMenu
{
    <ul>
        <li><a href="@Url.Action("Index", "ProduktbeispieleEditor", new { id = Model.Item.Id })" class="Active">Einstellungen</a></li>
        <li><a href="@Url.Action("Image", "ProduktbeispieleEditor", new { id = Model.Item.Id })">Bild</a></li>
    </ul>
}




<form action="@Url.Action("SaveIndex")" method="POST" id="idForm">
    @Html.HiddenFor(m => m.AutoCloseWindow)
    @Html.HiddenFor(m => m.Item.Id)

 <input type="checkbox" name="FoodTrends" value="@Model.Test2" />

</form>

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    复选框不会那样工作,你必须使用检查属性以选中您的复选框。

     @model Practice_web.Models.TestModel
    
    @{
        ViewData["Title"] = "Home Page";
    
    }
    
    <div class="text-center">
        <h1 class="display-4">Welcome</h1>
        <p>Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
    </div>
    
    
    
    <div>
        <input type="checkbox" name="FoodTrends" value="@Model.Test2" checked="@Model.Test2" />
    </div>
    

    动作控制器

     public IActionResult Index()
            {
                var model = new TestModel { Test2 = true };
                return View(model);
            }
    

    这是演示视频链接

    Demo Link

    请试试这个。这对我很有用

    【讨论】:

    • 您好,不幸的是,无论我的模型值是真还是假,这都会检查复选框。此外,您编写了 js 代码,但 asp.net 和 razor 是 c#。谢谢你!
    • 你想发布价值吗?
    • 还有一件事,它将根据您的模型值进行检查或取消检查。
    • Ofc,我将模型值设置为 true 和 false。但在这两种情况下,复选框都被选中。是的,我想检索复选框是否被选中的值
    • 为了发布数据,它删除了 onclick 事件和 js 代码。它会相应地工作。
    【解决方案2】:

    我不知道这是不是一个错误,或者我只是不明白剃刀页面是如何工作的,但我必须先在 AddModel 方法中更新模型,然后它似乎会选择我在 POCO 中为我设置的默认值复选框布尔属性。

    [BindProperty]
    public NewMember? User { get; set; }
    public AddModel()
    {
        User = new NewMember();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      • 2020-02-03
      • 2018-01-03
      • 2019-07-25
      • 2011-11-18
      • 1970-01-01
      相关资源
      最近更新 更多