提交表单后重置textarea的值
- 我想通过/ MyController / Message / 3向userID = 3发送一条消息
- 这执行Message()[get]操作,我在文本区域中输入一些文本,然后单击“保存”以发布表单
- Message()[post]操作保存更改,将SomeText的值重置为空字符串,然后返回视图。
此时,我希望文本区域为空,因为我已将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();
}
和对应的视图:
<%@ 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>
回答:
问题是HtmlHelper正在检索ModelState值,该值已用发布的数据填充。与其通过重置ModelState来解决这个问题,不建议将其重定向回[get]操作。[post]操作还可以设置如下临时状态消息:
[AcceptVerbs(HttpVerbs.Post)]public ActionResult Message(int ID, string SomeText)
{
// save Text to database
SaveToDB(ID, SomeText);
TempData["message"] = "Message sent";
return RedirectToAction("Message");
}
在我看来,这似乎是更正确的行为。
以上是 提交表单后重置textarea的值 的全部内容, 来源链接: utcz.com/qa/404587.html