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")
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
值。