我正在使用MVC5 ASP.Net和Razor Engine一个视图,该视图具有以下html帮助器,用于显示文本框并将其值设置为ViewBag.SearchText。
当用户在此文本框中输入文本并查看帖子时,则根据ViewBag.SearchText中的值正确设置值,但在控制器的操作中,ViewBag.SearchText = string.Empty,则文本框仍然保留其原始值而不是空字符串。
这是文本框的Html帮助程序应该如何表现或者我错过了什么,我怎么能将textbox的值设置为空字符串?这是自ViewBag以来很奇怪的。当我在Visual Studio 2013中单步执行代码时,SearchText值为空字符串。
@Html.TextBox("SearchText", (string)ViewBag.SearchText)
更新1:
我发现在控制器动作开始时使用代码Model.Clear()解决了这个问题。但是,我找到了另一种方法来清除用于在回发后填充文本框的ModelState部分。 ModelState中的键是文本框的id,它是' SearchText'。 代码如下。
ModelState.SetModelValue("SearchText", new ValueProviderResult(null,string.Empty,
System.Globalization.CultureInfo.InvariantCulture));
答案 0 :(得分:1)
默认情况下(ModelState
保留回发后的值)。
您可以在设置ModelState.Clear()
之前使用ViewBag.SearchText = "";
并返回视图。但请谨慎使用,因为如果您使用验证
ModelState
可能会产生意外结果