Asp.net mvc 4 asp.net MVC:清除模型状态
我正在重构一个razor视图,该视图当前没有使用模型将值传递给相应的控制器。该视图还包含一个JS方法,用于清除表单上的控件Asp.net mvc 4 asp.net MVC:清除模型状态,asp.net-mvc-4,razor,Asp.net Mvc 4,Razor,我正在重构一个razor视图,该视图当前没有使用模型将值传递给相应的控制器。该视图还包含一个JS方法,用于清除表单上的控件 $('#btnClear').bind("click", ClearTheForm); 鉴于我现在正在绑定输入控件,因此: @Html.LabelFor(model => model.ContactNumber, "contact number ") @Html.TextBoxFor(model => model.ContactNumber)
$('#btnClear').bind("click", ClearTheForm);
鉴于我现在正在绑定输入控件,因此:
@Html.LabelFor(model => model.ContactNumber, "contact number ")
@Html.TextBoxFor(model => model.ContactNumber)
…清除它们的最佳实践方法是什么
(我将根据Ehsan的回复更新此内容)
其目的只是清除表单上的所有控件。我不想以任何方式“处理”当前模型。表单实际上位于jQuery选项卡中,模型是从“父”视图加载的,即:Index()的视图
因此,在我的儿童观点中,我相信以下方法会奏效:
$.ajax({ url: "/Communications/Index", type: "GET"});
它正确地调用Index()操作方法,我在其中添加了ModelState.Clear();即
然而,即使我可以逐步完成代码,文本框仍然没有被清除
@Html.LabelFor(model => model.ContactNumber, "contact number ")
@Html.TextBoxFor(model => model.ContactNumber)
有什么想法吗
Ta
yogi我假设此表单将对处理此表单的控制器方法进行POST/GET,然后重新加载表单或显示错误等 要完成任务,最简单的方法是在控制器方法中捕获表单数据并对其进行处理,而不是将收到的模型返回到视图,只需实例化一个新模型并将其返回到视图。您还需要清除模型
ViewState
您的方法可能如下所示
public ActionResult ProcessForm(SomeModel Model)
{
//process model
var NewModel = new SomeModel();
ModelState.Clear();
return view(NewModel);
}
此时,表单将被重新加载,所有输入都将被清除
ModelState.Clear();
var commsModel = new CommunicationModel
{
CustCommsModel = custCommsModel,
EngineerCommsModel = engineerCommsModel
};
return View(commsModel);
@Html.LabelFor(model => model.ContactNumber, "contact number ")
@Html.TextBoxFor(model => model.ContactNumber)
public ActionResult ProcessForm(SomeModel Model)
{
//process model
var NewModel = new SomeModel();
ModelState.Clear();
return view(NewModel);
}