【问题标题】:How to capture ID value from a SelectList item in Razor Pages?如何从 Razor 页面中的 SelectList 项中捕获 ID 值?
【发布时间】:2020-12-14 21:52:19
【问题描述】:

我对 Web 编程很陌生,我正在尝试使用 ASP.Net Core 3.0 上的 Razor Pages 制作一个简单的数据输入页面。

我在使用标签中的 SelectList 时遇到了一些问题。我试图获得的行为是从视图中的 SelectList 中捕获 ID 值,这只是拒绝正常工作,至少在 OnPost 方法上是这样。

这是我的代码:

Table Mapping

Get the records I need using FromSqlRaw

Main table and List of items as IEnumerable

Code in the View as SelectList

How the list looks on the actual site

我真正需要的是捕获列表项的 ID 值 (IDCON) 并将其发布到 asp-for 中的绑定属性,但无论出于何种原因,返回的值始终为 null。关于我做错了什么或不同的方法有什么想法吗?

任何帮助将不胜感激。

【问题讨论】:

    标签: html asp.net-core bootstrap-4 razor-pages selectlist


    【解决方案1】:

    您可以尝试添加[BindProperty],这是一个带有假数据的工作演示。

    cshtml:

    <form method="post">
        <label asp-for="registro.IDCON">Consecuencia</label>
        <select asp-for="registro.IDCON" asp-items="@(new SelectList(Model.consecuencias,"IDCON","DSCCON"))">
            <option value="">---Elegir Consecuencia---</option>
        </select>
        <span asp-validation-for="registro.IDCON" class="text-danger"></span>
        <input type="submit" value="submit"/>
    </form>
    

    cshtml.cs:

    public class TestIDCONModel : PageModel
        {
            [BindProperty]
            public ROCONSEC registro { get; set; }
            [BindProperty]
            public List<ROCONSEC> consecuencias { get; set; }
            public IActionResult OnGet()
            {
                consecuencias = new List<ROCONSEC> { new ROCONSEC { IDCON = 1, DSCCON = "PROCESO RALENTIZADO" }, new ROCONSEC { IDCON = 2, DSCCON = "PROCESO DESTRUIDO" } };
                return Page();
            }
            public IActionResult OnPost()
            {
                int IDCON = registro.IDCON;
                return Page();
            }
        }
    

    结果:

    【讨论】:

      【解决方案2】:

      感谢您的回答。

      说我遇到这个问题很尴尬,因为我将主表模型不正确地映射到外键值上。我直接映射为相应表的对象而不是字段类型,它在运行时试图从我的主表中获取明显不存在的 ID。

      话虽如此,当我使用 Request.Form[""] 检查是否有任何值从视图传递到 VM 时,是您的贡献让我意识到了这一点,这让我感到很奇怪,因为它是,但 ModelState 中的acceptedValue 为空。我重新检查了我的整个代码并最终纠正了这个问题,现在我的页面正在按预期工作。

      干杯!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-01
        • 2021-03-14
        • 1970-01-01
        • 2021-02-13
        • 1970-01-01
        • 1970-01-01
        • 2021-04-08
        • 2014-05-15
        相关资源
        最近更新 更多