【问题标题】:Problem inserting data in database from option menu using ASP.NET CORE使用 ASP.NET CORE 从选项菜单在数据库中插入数据时出现问题
【发布时间】:2021-04-25 05:05:30
【问题描述】:

我正在尝试使用 dot net core 在数据库中设置数据,其他一切都可以正常插入,除非它试图从选项菜单中获取数据。 这是视图的代码(部分是因为我认为整个代码没有必要,如果有,请告诉我,我会上传它。)

我做错了什么? 提前感谢

           ` <label asp-for="Seizure">Seizure:</label>
            <select asp-for="Seizure" name="seizures" id="seizures">
                <option value="fixeddecorative">Fixed / decorative hatch</option>
                <option value="functional">Functional hatch</option>
            </select>
        </div>
        <div class="form-group">
            <label asp-for="HatchTrap">Hatch trap:</label>

            <select asp-for="HatchTrap" name="hatchtraps" id="hatchtraps">
                <option value="nowindcatcher">No wind catcher</option>
                <option value="modelA">Model A</option>
                <option value="modelB">Model B</option>
                <option value="modelC">Model C</option>
            </select>
        </div>
        <div class="form-group">
            <input type="submit" value="Create"  class="btn btn-primary" />
        </div>`

这是我的控制器的代码:

[HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Create([Bind("OrderId,Model,Color,Size,Seizure,HatchTrap,User")] ShutterOrders order)
    {
        if (ModelState.IsValid)
        {
            _context.Add(order);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Create));
        }
        
            return View(order);
        
    }

对象中的拾取值:

【问题讨论】:

  • 可以添加错误信息吗?
  • @B.S.我没有收到错误消息,在调试器中它根本没有被拾取。该对象具有除选项菜单中的值之外的所有其他值(写入空值)。而且也没有在数据库中注册。我会上传这张图片。

标签: html asp.net asp.net-mvc database asp.net-core


【解决方案1】:

模型绑定在源代码中查找名称模式 prefix.property_name。如果什么都没找到,它只查找没有prefixproperty_name。在您的代码中,选择列表的名称与ShutterOrders 模型中的属性不匹配。

你需要知道asp-for默认会生成nameid html元素。作为示例,如果你使用以下代码:

<select asp-for="HatchTrap">
</select>

它将在浏览器中生成html:

<select id="HatchTrap" name="HatchTrap">
</select>

所以,为了满足您的要求,只需删除名称和 id(id 是可选的,您可以删除或保留它):

@model ShutterOrders
<form asp-action="Create">
    //other properties...

    <div class="form-group">
        <label asp-for="Seizure">Seizure:</label>
        <select asp-for="Seizure">
            <option value="fixeddecorative">Fixed / decorative hatch</option>
            <option value="functional">Functional hatch</option>
        </select>
    </div>
    <div class="form-group">
        <label asp-for="HatchTrap">Hatch trap:</label>

        <select asp-for="HatchTrap">
            <option value="nowindcatcher">No wind catcher</option>
            <option value="modelA">Model A</option>
            <option value="modelB">Model B</option>
            <option value="modelC">Model C</option>
        </select>
    </div>
    <div class="form-group">
        <input type="submit" value="Create" class="btn btn-primary" />
    </div>
</form>

结果:

【讨论】:

  • 你绝对的传奇。谢谢,删除名称标签就可以了:) @Rena
猜你喜欢
  • 1970-01-01
  • 2011-01-21
  • 2016-08-31
  • 2021-07-01
  • 1970-01-01
  • 2020-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多