Asp.net mvc 4 asp.net MVC:清除模型状态

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)

我正在重构一个razor视图,该视图当前没有使用模型将值传递给相应的控制器。该视图还包含一个JS方法,用于清除表单上的控件

  $('#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);
}