c# - 发布时如何清除 Razor 页面模型上的绑定属性?
问题描述
我有一个绑定到输入字段的属性:
<input id="name" asp-for="ContactName" name="ContactName" placeholder="Name" type="text" style="width: 200px !important;" autofocus>
[BindProperty]
public string ContactName { get; set; }
当我发布时,我尝试ContactName
通过将其设置为 NULL 或 string.Empty 来清除该属性,但它不起作用。
清除该字段的正确方法是什么?
解决方案
“正确”的方式是遵循 PRG(Post-Redirect-Get)模式。您输入的值来自ModelState
,而不是Model
。ModelState
, 本身由来自Request
, ViewData
/的值组成ViewBag
,最后是模型。换句话说,如果在类似 的绑定成员中存在值Request
,则该值将优先于您在模型上设置的任何内容。
PRG 模式指示您应该仅在出现验证错误时将视图返回给用户。在这种情况下,您希望显示发布的数据而不是模型上的数据,以便用户可以更正任何错误。如果用户的输入是有效的,你重定向,即使它返回到同一页面。重定向的行为清除了帖子中的所有内容。就好像你是第一次来到这个页面,因为事实上,这是一个全新的 GET 请求。
推荐阅读
- javascript - 如何循环遍历vuejs中的嵌套数组
- python - 如何替换所有数字,除了python中的特定数字?
- php - PHP 在按钮单击时执行 Python 脚本
- django - Django restful API - 使用令牌获取用户 ID
- visual-studio-code - 连接 ENOENT /usr/local/bin/Library/Application Support/Code/1.25.1-shared.sock
- twitter-bootstrap - 内部组成和文本之间的引导空间
- python - Python:从if语句条件的列表中删除一个项目?
- android - 从材料组件上的按钮中删除等宽字体
- android - 删除拇指并为禁用的搜索栏设置progressTint
- javascript - 当应用程序在后台时存储时间戳。反应原生