Html.Textbox助手没有在MVC5 Razor中设置textbox的值

时间:2014-09-07 02:22:43

标签: asp.net-mvc textbox html-helper viewbag

我正在使用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));

1 个答案:

答案 0 :(得分:1)

默认情况下(ModelState保留回发后的值)。

您可以在设置ModelState.Clear()之前使用ViewBag.SearchText = "";并返回视图。但请谨慎使用,因为如果您使用验证

,则清除ModelState可能会产生意外结果