提交表单后重置textarea的值

  1. 我想通过/ MyController / Message / 3向userID = 3发送一条消息
  2. 这执行Message()[get]操作,我在文本区域中输入一些文本,然后单击“保存”以发布表单
  3. 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

回到顶部