model-binding 相关问题

模型绑定是ASP.NET MVC和(来自.NET 4.5)ASP.NET WebForms的一项功能,它通过使用请求数据创建强类型对象来简化控制器操作。

Web Api 参数绑定:snake_case 到camelCase

我正在一个新的Web api项目上做一些工作,我的方法/参数遵循标准的c#命名格式;方法名是PascalCase,参数是camelCase。 不幸的是我只是

回答 4 投票 0


如何在asp.net core中启用转义JSON字符串解析?

当我使用转义的 JSON 字符串向端点发送请求时,它会抛出异常“JSON 值无法转换为 Test.TestClass 。 Path: $ | LineNumber: 0 | BytePositionInLine: 90...

回答 1 投票 0

FromBody 不会忽略 POST 上用 JsonIgnore 修饰的属性

我正在构建一个控制器,该控制器应该通过请求的主体接收工作流类型,但它不尊重 JsonIgore 属性并引发模型验证错误,其中显示: “名字……

回答 2 投票 0

为什么 ASP.NET MVC 回发后模型为空

我正在使用最新的 .NET Framework 和 VS 2019 开发 ASP.NET MVC 应用程序。 在我的页面中,我有一个简单的文本框和一个搜索按钮。当我单击搜索按钮并回发表单时,在

回答 2 投票 0

ASP.NET Core MVC 中 ViewModel 的模型绑定不起作用

当我将模型发送回控制器时,模型实例返回时所有属性均为空。 这是具有一些属性的 ViewModel,包括 SelectList 和模型实例。 公共...

回答 1 投票 0

有没有比隐藏输入字段更安全的替代方法来在 POST 请求中保留属性?

我遇到了一个问题,即由于忘记在我的 标签内添加隐藏字段,我的 CRUD 应用程序中的发布请求导致数据丢失。例如,我有一个 UserModel,它有一个 我遇到了一个问题,即由于忘记在我的 <form> 标签内添加隐藏字段,我的 CRUD 应用程序中的发布请求导致数据丢失。例如,我有一个 UserModel,它具有 DateCreated 属性,理想情况下不应在创建记录后更新该属性。但我的 CRUD 应用程序内的后续更新导致我的 UserModel 的 DateCreated 字段被设置为 NULL。这是因为在我的 Razor 页面中没有 <input asp-for="Input.DateCreated" hidden /> 标签可以跨 POST 请求保留 DateCreated 的值。我犹豫是否接受解决此问题的最佳方法只是记住为您不想更新的每个字段添加隐藏的输入标记。仅仅记住这样做似乎是不必要的风险和糟糕的设计。 一些示例代码: <form method="post"> <input asp-for="AspNetUsersId" hidden /> <input asp-for="Input.DateCreated" hidden /> <div class="mb-2"> <label asp-for="Input.Email" class="form-label">Email:</label> <input asp-for="Input.Email" type="email" class="form-control form-control-sm" /> <span asp-validation-for="Input.Email" class="text-danger form-text"></span> </div> <div class="mb-2"> <label asp-for="Input.FirstName" class="form-label">First Name:</label> <input asp-for="Input.FirstName" class="form-control form-control-sm" /> <span asp-validation-for="Input.FirstName" class="text-danger form-text"></span> </div> <div class="mb-2"> <label asp-for="Input.LastName" class="form-label">Last Name:</label> <input asp-for="Input.LastName" class="form-control form-control-sm" /> <span asp-validation-for="Input.LastName" class="text-danger form-text"></span> </div> </form> 想到的一个解决方案是开始使用 DTO 进行更新,它根本不包含 DateCreated 字段,并且只需要将 Id 属性包含在隐藏字段中,但后来我遇到了一个问题,我必须进行后续查询以获取 UserModel 的其余属性,然后相应地映射它们并将其传递给我的 Update 方法。 或者,我可以编写另一个接受 UpdateUserDto 的更新方法。 使用隐藏输入标签是跨发布请求保留模型属性的最佳方法还是这个问题是更大的架构问题的结果? 如果您希望将所有属性都包含在 SQL 更新命令中,则 DbContext.Update 方法非常合适。但是,如果您只想启用对实体中某些属性的修改,建议的解决方案是将实体附加到上下文,然后指定可能已修改的属性。这样,只有这些字段才会包含在生成的 SQL 更新命令中。 context.Attach(myEntity); context.Entry(myEntity).Property(x => x.Name).IsModfied = true; context.Entry(myEntity).Property(x => x.Description).IsModfied = true; await context.SaveChangesAsync(); 在隐藏字段中包含其他属性值并不是一个好主意,因为例如熟悉浏览器开发工具的用户可以修改它们。或者任何可以制作 HTTP 请求的人。

回答 1 投票 0

自定义模型与集合的绑定

我有一个列表作为名为“Person”的模型类中的字段 在此输入图像描述 我已在 Program.cs 文件中全局启用自定义人员模型绑定器 在此输入图像描述 斯...

回答 1 投票 0

将查询参数绑定到 ASP.NET Core 中的模型

我正在尝试使用从查询参数到对象的模型绑定来进行搜索。 我的搜索对象是 [数据合同] 公开课标准 { [DataMember(名称 = "名字")] 公共字符串

回答 8 投票 0

.net 8 Blazor Web assembly 中复杂模型的表单绑定

我有一个复杂的模型,我想在表单中发布,但它没有被绑定。只有第一层有数据。 Model.Items 和后续的 item.Items 不会被绑定。组件是相互作用的...

回答 2 投票 0

ASP.NET Core 将 Null 参数传递给控制器端点

使用模型绑定器可以将 NULL 复杂类型传递到控制器端点。 该解决方案并不适用于所有控制器端点,重建模型也不是直截了当的......

回答 2 投票 0

列表未在 ASP.NET Core 中绑定模型

我的视图中有一张表格,如下所示。列表 Model.SchoolList 有 2 条记录,并且正在按预期显示。下面是我的代码的简化版本。 模型类: 公开课SchoolVie...

回答 1 投票 0

访问 ASP.NET Core 控制器中的 ViewModel 属性

我一直在关注有关基本 CRUD 操作的 EF 核心教程,但在从 ViewModel 获取数据时遇到问题。 我正在遵循他们推荐的使用 TryUpdateModel 的做法(或在...

回答 1 投票 0

将 Entity Framework Core 模型绑定到 ASP.NET Core 控制器中的操作方法

我有一个具有多种操作方法的 ASP.NET Core 控制器。每个操作方法都有一个 {id} 路径参数,并在几乎每个请求中执行以下操作: [HttpPost("action1/{id}")] 公开

回答 1 投票 0

将实体核心模型绑定到asp.net core控制器中的控制器操作

我有一个具有多个操作的 asp.net core 控制器。每个操作都有一个 {id} 路径参数,并在几乎每个请求中执行以下操作。 [HttpPost("action1/{id}")] 公共异步任务<

回答 1 投票 0

如何将模型参数值从动作传递到视图并返回到另一个控制器动作?

如何使模型在多个操作和视图中保持活动状态?这样中间就不会丢失参数值。我怀疑我在模型绑定中犯了一些基本错误。 例如, 我有一个模特 p...

回答 1 投票 0

如何将 json 转换为 Laravel Eloquent 模型?

如果我有一个名为 Post 的 Eloquent 模型,并且 mysql 表有: 整数 ID, 字符串文本 我如何转换这个 JSon: { post: { text: '我的文字' } } 到相关的 Post 对象,一旦收到...

回答 6 投票 0

将多个输入文件绑定到 IEnumerable

我正在使用 ASP.NET MVC 来构建一个小型网站。我找不到一种将多个文件输入绑定到一个 IEnumerable 的方法。 我认为有以下几点: 我正在为一个小型网站使用 ASP.NET MVC。我找不到一种方法将多个文件输入绑定到一个 IEnumerable。 我认为有以下输入: <input type="file" name="medical-certificate-file" id="medical-certificate-file"> <input type="file" name="manager-degree-doc-file" id="manager-degree-doc-file"> 我的模型看起来像这样: public class Document { public DocumentType DocumentType { get; set; } public IFormFile File { get; set; } } public class InputModel { public IEnumerable<Document> Documents { get; set; } } 我尝试以成功映射其他表单数据的方式映射文件 - 更改名称属性: <input type="file" name="Documents.File" id="medical-certificate-file"> 此解决方案有效,但当然仅适用于一个文件。第二个,从逻辑上讲,不能用相同的名称映射。 我也尝试过使用asp-for,像这样: <input asp-for="Documents.ElementAt(0).File" type="file" name="medical-certificate-file" id="medical-certificate-file"> 此解决方案甚至不适用于单个文件。我也尝试过不同的品种。 我应该注意,输入表单是多个的,而不是具有多个文件选择选项的,这一点很重要。有几个文件,而不是我在示例中指出的两个文件。 提前感谢您的宝贵时间! 尝试使用 name="Documents[0].file" 将文件绑定到 IEnumerable Documents : <input type="file" name="Documents[0].file" id="medical-certificate-file"> <input type="file" name="Documents[1].file" id="manager-degree-doc-file"> 演示如下: <form asp-action="Index" enctype="multipart/form-data"> <input type="file" name="Documents[0].file" id="medical-certificate-file"> <input type="file" name="Documents[1].file" id="manager-degree-doc-file"> <input type="submit" value="Create" /> </form> 结果:

回答 1 投票 0

ASP.NET Core 的 BindNever 不适用于记录

使用 Razor Pages 7 时,我在代码隐藏文件中包含以下内容: 公共记录 PersonDto( 长身份证, 字符串名称, [BindNever] 字符串地址, // ... ); [BindProperty] public PersonDto Person { ...

回答 2 投票 0

如何接受 ASP.NET Core Web API 上的所有内容类型?

我的 ASP.NET Core Web API 上有一个端点,如下所示: [路线(“api/v1/对象”)] [http邮报] 公共ObjectInfo CreateObject(ObjectData对象); 我正在迁移此 API

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.