在一页上创建/更新一对多关系模型

如何解决在一页上创建/更新一对多关系模型

找不到在线的示例,该示例不涉及在单独的页面上为每个模型创建或更新行。我有一个简单的访问表,其中总体访问是一个模型,其中包含主机的信息和其他通用参数。第二种模型是“访客”,其中“访客”可以有很多。关系很好,我可以分别更新它们。

我已经建立了一个请求表单,我想在一页上做所有事情。表单的上半部分是有关访问的常规信息,下半部分是javascript动态表单部分,用于动态添加/删除访问者。表单的效果很好,可以很好地输入“访问”信息,但是我不能从进入的信息中获取列表。它们的名称遵循“访问者[1]。名称”等格式。

我尝试将List Visitors作为一个变量添加到Visit模型中,还尝试了一个组合的自定义模型,其中包含Visit和Visitors。有人有建议吗?

解决方法

根据您的描述,我想这个问题可能与输入的名称值有关。由于模型绑定将根据参数名称绑定值。我建议您可以检查输入名称,以确保它与模型绑定格式匹配。

例如:

如果您的访问和访问者类别如下: 公开课参观 { public int id {get;组; } 公共字符串visitname {get;组; } 公开名单访问者{组; } } 公共类访客 { public int id {get;组; } 公共字符串访问者组; } }

然后,访客的输入名称应为visitors[0].idvisitors[1].idvisitors[2].idvisitors[0].visitorvisitors[1].visitor或其他。

更多详细信息,您可以参考以下代码:

控制器:

public class HomeController : Controller
    {
        Visit visits;//It is a global variable
        public HomeController()
        {
            visits = new Visit
            {
                id = 10,visitname = "visit1",visitors = new List<Visitors>
                {
                    new Visitors{ id=19,visitor="visitor1"},new Visitors{ id=20,visitor="visitor2"}
                }
            };
        }

        public IActionResult Index()
        {
            return View(visits);
        }
}

在Index.cshtml中,JavaScript对视图所做的更改可能会影响Visitors 1。Name中下标的更改。因此,在添加元素和删除相应元素时,应该更改索引值。

    @model solution930.Models.Visit
@{
   //Set a global variable
    var count = Model.visitors.Count;
}
    <form action="/home/get" method="post">
        id
        <input asp-for="@Model.id" />
        visitname
        <input asp-for="@Model.visitname" />
        <div id="visitors">
            @for (var i = 0; i <count; i++)
            {
                <div class="visitor">
                    <input name="visitors[@i].id" asp-for="@Model.visitors[i].id" />
                    <input name="visitors[@i].visitor" asp-for="@Model.visitors[i].visitor" />
                    <input type="button" name="name" value="deleterow" onclick="del(event,@Model.visitors[i].id)" />
                </div>
            }
        </div>
        <input type="submit" name="name" value="sub" />
    </form>
<button id="addvisit" onclick="add()">add</button>
@section Scripts{
    <script>
        var hasCount=@count;
        function del(e,id) {
            if (index == 0) {
                console.log(e.currentTarget.parentElement)
                e.currentTarget.parentElement.remove()
                return;
            }
            location.href = '/home/delete?id=' + id
       }

        function add() {
            var ele = '<div class="visitor"> <input name="visitors[' + hasCount + '].id" type="number" data-val="true" data-val-required="The id field is required." id="visitors_' + hasCount + '__id" value="">  <input name = "visitors[' + hasCount + '].visitor" type = "text" id = "visitors_' + hasCount + '__visitor" value = "" >  <input type="button" name="name" value="deleterow" onclick="del(event,0)"> </div>'
            $('#visitors').last().parent().append(ele)
            hasCount++
            console.log(hasCount)
        }
    </script>
}

结果:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-