asp.net-mvc – 清除模型后为什么文本框不清除
发布时间:2020-12-16 03:59:26 所属栏目:asp.Net 来源:网络整理
导读:我有一个通过ajax提交给Controller的表单. Controller从Model收集数据,然后创建一个新的ViewModel并将其传递给部分视图,然后在Client上更新. 问题是文本框没有按预期清除.消息按预期到达视图,因此没有清除TextBoxes没有意义. 然而,它似乎是一个浏览器问题,因
我有一个通过ajax提交给Controller的表单. Controller从Model收集数据,然后创建一个新的ViewModel并将其传递给部分视图,然后在Client上更新.
问题是文本框没有按预期清除.消息按预期到达视图,因此没有清除TextBoxes没有意义. 然而,它似乎是一个浏览器问题,因为这是生成的HTML,注意,该值没有任何内容: <input id="Address_Address1" name="Address.Address1" type="text" value="" /> 然而,用户看到了先前输入的值. 这是控制器: //Process Order Here //This should clear out the ViewModel. order = new OrderViewModel(); order.Message = "Report Added to your cart"; return PartialView("_NewOrderPartial",order); 这是局部视图: @model NTC.PropertySearch.Models.OrderViewModel @using (Ajax.BeginForm("NewOrder","Order",new AjaxOptions { InsertionMode = InsertionMode.Replace,UpdateTargetId = "neworder" })) { <div id="neworder"> <table> <tr> <th style="width: 300px;"> <h3>Enter property address below</h3> </th> <th style="width: 30px;"></th> <th style="width: 300px;"> <h3>Choose your report below</h3> </th> </tr> <tr> <td> <div class="form"> <table> <tr> <td> @Html.LabelFor(m => m.Address.Address1) </td> <td> @Html.TextBoxFor(m => m.Address.Address1) </td> <td> @Html.ValidationMessageFor(m => m.Address.Address1) </td> </tr> <tr> <td> @Html.LabelFor(m => m.Address.Address2) </td> <td> @Html.TextBoxFor(m => m.Address.Address2) </td> <td> @Html.ValidationMessageFor(m => m.Address.Address2) </td> </tr> <tr> <td> @Html.LabelFor(m => m.Address.City) </td> <td> @Html.TextBoxFor(m => m.Address.City) </td> <td> @Html.ValidationMessageFor(m => m.Address.City) </td> </tr> <tr> <td> @Html.LabelFor(m => m.Address.State) </td> <td> @Html.TextBoxFor(m => m.Address.State) </td> <td> @Html.ValidationMessageFor(m => m.Address.State) </td> </tr> <tr> <td> @Html.LabelFor(m => m.Address.ZipCode) </td> <td> @Html.TextBoxFor(m => m.Address.ZipCode) </td> <td> @Html.ValidationMessageFor(m => m.Address.ZipCode) </td> </tr> </table> <input type="submit" value="Add Report" /> @Html.DisplayFor(m=> m.Message) </div> </td> </tr> </table> </div> 解决方法
原因是因为TextBox等Html帮助程序在绑定它们的值时首先查看ModelState,然后才在View模型中查看.当人们尝试在HttpPost控制器操作中修改/清除视图模型的某些值时,通常会发生这种情况.相应的视图将使用初始POSTed值而不是视图模型中的值.
您应该在控制器操作中清除ModelState: ModelState.Clear(); order = new OrderViewModel(); 或者,如果您不想清除整个ModelState(尽管在您重新初始化整个视图模型时似乎就是这种情况),您只能清除一些您想要修改的属性: ModelState.Remove("SomeProperty"); viewModel.SomeProperty = "some new value"; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – mvc HtmlHelper DisplayFor函数如何从lambd
- Crystal Reports 13和Asp.Net 3.5
- asp.net – 使用EF5从4.5降级到4.0后无法加载文件或程序集“
- asp.net-mvc – 使用MVC Web应用程序时Nhibernate的最佳缓存
- asp.net-core – 如何在asp.net 5类库nuget包中包含视图
- asp.net-mvc – 当我用fiddler检查时,VS2013 RTM每秒发出一
- asp.net – 加密cookie中的会话ID(或其他身份验证值)是否有
- asp.net-mvc – ASP.NET MVC LINQ to SQL或Entities?
- asp.net-mvc – 如何检查是否为浏览器启用了cookie
- 制作打印机友好的ASP.NET页面的最佳方法?
推荐文章
站长推荐
- ASP.NET MVC – Ajaxified RenderAction
- 如何创建一个asp.net会员提供者手动加密密码?
- asp.net – 如何在web.config中加密连接
- 使用内部SecurityException抛出异常仅在ASP.NET
- asp.net-mvc – 在.NET MVC上启用Http PUT请求
- asp.net – 在POST时丢失HTML表单数据
- asp.net-mvc – 如何在不同的控制器中管理MVC区域
- ASP.NET MVC 4 JSON绑定到视图模型 – 嵌套对象错
- 详解ASP.NET Core 中的框架级依赖注入
- asp.net-mvc – HttpContext.Current.User.IsInR
热点阅读