提交表单后重置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>


互换的青春
浏览 772回答 3
3回答

心有法竹

问题是您的ModelState重新填充了发布的值。您可以做的是在具有Post属性的Action上清除它:ModelState.Clear();

慕尼黑8549860

html帮助程序从ModelState读取值。并没有一种优雅的方法可以覆盖这种行为。但是,如果您在之后添加此行SaveToDB(ID, SomeText),它应该可以工作:ModelState["SomeText"].Value =&nbsp;&nbsp; &nbsp; new ValueProviderResult("", "", CultureInfo.CurrentCulture);
打开App,查看更多内容
随时随地看视频慕课网APP