我正在使用asp.net核心剃刀引擎。在TextArea中输入文本并点击提交按钮后,我想清除TexArea中的文本。我无法使用html或c#找到有关如何执行此操作的任何内容。 这是我的TextAreaFor
的代码 <h1>Add Your Comment</h1>
@using(Html.BeginForm("AddComment","Home"))
{
<p>
<label>Your Comment</label>
@Html.TextAreaFor(d=>d.comment)
@Html.ValidationMessageFor(d => d.comment)
</p>
<input type="submit" name="submit" value="Add my Comment!"/>
}
这是我的AddComment控制器
[HttpPost]
[Route("addComment")]
public IActionResult AddComment(Messages model)
{
var user_id = HttpContext.Session.GetString("Id");
if(user_id == null){
return RedirectToAction("Index");
}
model.Users_id = Convert.ToInt32(user_id.ToString());
userFactory.addComment(model, user_id);
setTempData();
ViewBag.Messages = userFactory.FindAll();
model.comment ="";
return View("Login", model);
}
对userFactory的调用工作,它是我的工厂调用我的数据库
答案 0 :(得分:0)
完成所有工作后,您不应return View(...)
,而应将用户重定向到RedirectToAction
。通过这样做,您可以清除所有表单字段,并使用Post-redirect-get pattern来阻止用户进行双重提交。
当您发布整个页面时,几乎总是应用相同的模式。
答案 1 :(得分:-1)
似乎您的帖子方法&#39; AddComment&#39;在这种情况下,再次返回此视图。在这种情况下,您可以发送模型的新引用以重置旧数据。类似的东西。
[HttpPost]
public ActionResult AddComment(YourModel objModel)
{
// your code
return View("path of the view", new YourModel()); // don't send back objModel. It already contains data.
}
在这种情况下,您的旧数据将被清除。
或者,如果您要清除任何特定字段,请更改 objModel 的特定属性,并将objModel发送到您的视图。