MVC 负载值作为 get 提交

本文关键字:get 提交 负载 MVC | 更新日期: 2023-09-27 18:35:18

我正在实现一个带有一个搜索面板的页面列表,该面板提交一个GET表单。

我有三个字段,一个用于搜索字段名称,使用@Html.TextBox创建,另外两个字段为我创建扩展名。

问题是,当我提交表单并且页面重新加载以显示结果时,唯一再次加载值的字段是 @Html.TextBox ,即使我没有value参数上设置任何值。

下面是实现这些搜索字段的代码,知道TextBox扩展如何工作以具有此行为吗?

@Html.TextBox("s.Name", null, new { @class = "text", @maxlength = "100" })
@Html.Date("s.Birthdate", null, new { @class = "datetime" })
@Html.SearchBoolean("s.IsPlayer")

MVC 负载值作为 get 提交

HtmlHelpers 的源代码在这里

如果您查看扩展使用的用于生成input元素的代码Html.TextBox您将看到这段代码:

string attemptedValue = (string)htmlHelper.GetModelStateValue(fullName, typeof(string));
tagBuilder.MergeAttribute("value", attemptedValue ?? ((useViewData) ? htmlHelper.EvalString(fullName, format) : valueParameter), isExplicitValue);

GetModelStateValue将搜索传递到视图中的模型中字段的值。因此,如果您不想显示任何值,则应在模型中为该字段分配一个null值。