- 我想通过转到/MyController/Message/3 向 userID=3 发送消息
- 这将执行
Message()
[get] 操作,我在文本区域中输入一些文本并单击“保存”以发布表单 Message()
[post] 操作保存更改,将 SomeText 的值重置为空字符串并返回到 View 。
此时我希望文本区域为空,因为我已将 ViewData["SomeText"]
设置为 string.Empty
。
为什么在发布操作后文本区域值没有更新为空字符串?
操作如下:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Message(int ID)
{
ViewData["ID"] = ID;
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Message(int ID, string SomeText)
{
// save Text to database
SaveToDB(ID, SomeText);
// set the value of SomeText to empty and return to view
ViewData["SomeText"] = string.Empty;
return View();
}
以及相应的 View :
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm())
{ %>
<%= Html.Hidden("ID", ViewData["ID"])%>
<label for="SomeText">SomeText:</label>
<%= Html.TextArea("SomeText", ViewData["SomeText"]) %>
<input type="submit" value="Save" />
<% } %>
</asp:Content>
最佳答案
问题是您的 ModelState 重新填充了发布的值。
你可以做的是在具有 Post 属性的 Action 上清除它:
ModelState.Clear();
关于c# - 表单提交后重置textarea的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/787895/