为什么没有清除模型值?
Why is the model value not cleared?
我正在开始使用 Asp.Net MVC。这是在我的 cshtml:
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "form-horizontal" }))
{
@Html.TextBoxFor(m => m.Username, new { @class = "form-control" })
<input type="submit" value="Submit" />
}
这是我的控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
return View();
}
[HttpPost]
public ActionResult Index(TestModel testModel)
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
testModel.Username = string.Empty;
return View(testModel);
}
}
正如您在发布表单时看到的那样,我将 Username
属性清空,但旧值保持不变。我错过了什么?
您似乎没有让视图知道它应该使用哪个模型。你有
@Model TestModel
在视图顶部的某处但忘记复制到这里?
丹尼尔
我能够在我的本地环境中重现您的问题,您需要做的是在 post 方法中使用以下行
ModelState.Clear();
您的方法应如下所示
[HttpPost]
public ActionResult Index(TestModel testModel)
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
testModel.Username = string.Empty;
ModelState.Clear();
return View(testModel);
}
我正在开始使用 Asp.Net MVC。这是在我的 cshtml:
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "form-horizontal" }))
{
@Html.TextBoxFor(m => m.Username, new { @class = "form-control" })
<input type="submit" value="Submit" />
}
这是我的控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
return View();
}
[HttpPost]
public ActionResult Index(TestModel testModel)
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
testModel.Username = string.Empty;
return View(testModel);
}
}
正如您在发布表单时看到的那样,我将 Username
属性清空,但旧值保持不变。我错过了什么?
您似乎没有让视图知道它应该使用哪个模型。你有
@Model TestModel
在视图顶部的某处但忘记复制到这里?
丹尼尔
我能够在我的本地环境中重现您的问题,您需要做的是在 post 方法中使用以下行
ModelState.Clear();
您的方法应如下所示
[HttpPost]
public ActionResult Index(TestModel testModel)
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
testModel.Username = string.Empty;
ModelState.Clear();
return View(testModel);
}