c# - 表单提交后重置textarea的值

标签 c# asp.net-mvc forms

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

相关文章:

c# - .NET Core 基于角色的身份 Cookie 动态过期

forms - Mailpoet 自定义表单和自定义字段

c# - 为什么我不应该使用 AutoDual?

c# - 确定缓冲区应该有多大

javascript - 使用 Razor 设置 javascript 变量

asp.net-mvc - HTTP 错误 403.14 - 禁止 Web 服务器配置为不列出内容

c# - 如何在 MVC5 中使用自定义属性路由重定向到路由

JavaScript - 从脚本中将值写入 html 表单

javascript - 如果输入太多数字,如何防止在 AngularJS 中使用 ng-pattern 验证的经过验证的屏蔽美国电话号码无效

c# - 将 C# 命令行应用程序转换为 Windows 服务