为了账号安全,请及时绑定邮箱和手机立即绑定

提交表单后重置textarea的值

提交表单后重置textarea的值

C#
互换的青春 2019-11-04 10:18:38
我想通过/ 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>
查看完整描述

3 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

问题是您的ModelState重新填充了发布的值。


您可以做的是在具有Post属性的Action上清除它:


ModelState.Clear();


查看完整回答
反对 回复 2019-11-04
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

html帮助程序从ModelState读取值。并没有一种优雅的方法可以覆盖这种行为。


但是,如果您在之后添加此行SaveToDB(ID, SomeText),它应该可以工作:


ModelState["SomeText"].Value = 

    new ValueProviderResult("", "", CultureInfo.CurrentCulture);


查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 771 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信