asp.net-mvc – ASP.NET MVC 3从同一表单保存和编辑
我们有一个表单,根据我们想要在同一表单中的添加操作和更新操作之间切换的情况.以下是我们表格的简化版本.
实际上,“订单号”文本框已禁用,并且永远不能以此形式进行编辑.现在,场景有点像这样: >用户第一次登录此表单时,“订单号”文本框为空白. 现在有些代码: 风景: <%: Html.TextBox("OrderNumber",Model.OrderNumber == 0 ? "" : Model.OrderNumber.ToString(),new { @disabled = "true" })%> 控制器: public ActionResult Index() { var customerOrderModel = new CustomerOrderModel(); return View(customerOrderModel); } public ActionResult Add(CustomerOrderModel customerOrderModel,FormCollection values) { // We write the logic for either the add or update. return this.View("Index",customerOrderModel); } 我已从Add操作中删除了代码,因为从断点开始我们知道“//我们为添加或更新编写逻辑”.不是问题. 现在我们遇到麻烦的是这个.我们可以在表格中添加新条目,然后“订单号”字段更新并正确显示.但是,在我们更改客户名称并尝试更新之后,传入“添加”操作的customerOrderModel显示传递的订单号为0(这是我们在系统中的默认值,用于确定我们是否正在执行添加或更新操作). 所以问题是为什么我们的文本框会更新,这似乎表明我们的模型正在更新,但是当我们尝试提交时,正确的模型不会被传递?此外,为什么在“添加”操作完成后,索引操作不会受到影响?我们需要做些什么才能按照我们希望的方式开展工作? 解决方法
这是因为HtmlHelpers首先向ModelState查找值,然后使用您明确使用的值.
因此,当您添加实体时,您会在模型状态中获得[“Id”] = 0. 因此解决了在成功添加后必须使用.Clear()清除ModelState. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Debug ASP.NET Core 2.0源代码
- asp.net-mvc – jwt令牌多租户
- 如何动态显示asp.net页面上的字节图像?
- asp.net-mvc – MVC应用程序部署; System.Data.SqlClient.S
- ASP.NET MVC下的四种验证编程方式
- asp.net – 创建一个工作线程,并在整个应用程序生命周期内保
- asp.net – 当页面加载是AJAX历史记录点的结果时,如何检测客
- asp.net – FederatedAuthentication.WSFederationAuthenti
- ASP .NET C#从Web路径中的文件中获取所有文本
- ASP.NET Core项目目录结构介绍