gpt4 book ai didi

ASP.NET Core 以单一形式使用两个模型

转载 作者:行者123 更新时间:2023-12-04 21:34:21 25 4
gpt4 key购买 nike

我正在使用 Tuple在 View 中传递两个模型,如下面的代码。

@model Tuple<AdvanceSearchModel, List<SearchUserModel>>
<form role="search" method="post" action="/Public/AdvanceSearch">
<div class="form-group">
<label>Name</label>
<input name="FullNames" type="text" class="form-control" value=""/>
</div>
<div class="form-group">
<label>Product</label>
<input name="Products" type="text" class="form-control" value="" />
</div>
<div class="form-group">
<label>Location:</label>
<input name="Location" type="text" class="form-control" value="" />
</div>
<div class="form-group">
<label>State</label>
<input name="States" type="text" class="form-control" value="" />
</div>
<div class="form-group">
<label>Country</label>
<input name="Countries" type="text" class="form-control" value=""/>
</div>
</form>

所有 name输入中的属性是 AdvanceSearchModel .如何使用标签助手,例如 asp-for将多个模型传递给包含一个或多个表单的 View 时?另外,在上述情况下提交表单后如何保留表单的值?

最佳答案

正如您在 source code of InputTagHelper 中看到的那样

你可以看到它创建了 name基于 html-tag 中 (lambda) 表达式的属性:asp-for .

你需要什么

您需要一个表格 name像这样的标签SearchUserModel[0].Location
在哪里:

  • SearchUserModel是您发布到
  • 的 Controller 方法中模型上的属性名称
  • [0]是列表中的索引
  • Location是列表中iten 上的属性SearchUserModel实例

  • 我的建议

    不做
  • 扩展 InputTagHelper 并添加前缀选项(为名称添加前缀)。
  • 使用 View 模型不是元组!
  • 创建只需要 SearchUserModel 的局部 View + 前缀(如列表中哪一行的 int,例如:usermodel[1])
  • 在您的 View 中循环列表并调用部分。

  • 结果
    @model SearchUserModel
    <input asp-for="Location" my-prefix="ListItem[@Model.Id]" class="form-control" />

    更好的长期选择
  • 制作 HTML 模板,了解 SearchUserModel表格的一部分应该看起来。
  • 执行 ajax 调用以获取数据或将数据作为 json 放在您的 View 中。 (或从不做的事情中采取第 3 步)
  • 使用结构良好的 javascript 生成表单。
  • 在提交时,不是提交表单,而是解析 from 到 json 并将其作为 json ajax 调用发送。

  • 我为什么这么说?如果您在 Controller 中获得奇怪的数据绑定(bind),则更容易调试。

    也就是说,选项 1 非常好,但以后可能会导致问题,因为它是非常静态的模板,您将无法轻松添加或删除行。

    列表的正确 html 名称标签的引用:
  • http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx
  • How does MVC 4 List Model Binding work?
  • 关于ASP.NET Core 以单一形式使用两个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42252355/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com