在ASP.NET MVC表单上允许多个按钮的最佳方法是什么?
我有一种感觉,我对此过于“网状”,但无论如何我都会问.我在ASP.NET MVC项目中有一个表单,它有一些输入字段和两个按钮.一个按钮用于“过滤”其中一个列表框.另一个用于提交表单.我的观点看起来像这样:
<%using (Html.BeginForm()) {%> <%=Html.TextBox("SearchItems") %> <input type="submit" name="Command" value="Find" /> <%=Html.ListBox("SelectedItems",new MultiSelectList(model.AvailableItems,"Id","Name",model.SelectedItems))%> //Some other form fields. <input type="submit" name="Command" value="Send" /> <%} %> 我的动作看起来像这样: [AcceptVerbs(HttpVerbs.Post)] public ActionResult Index([Bind(Prefix = "")]SendMessageRequest model) { if (model.Command == "Find") return SearchItems(model); if (model.Command == "Send") return Send(model); throw new Exception("Invalid command."); } 这样做 – 控制器根据单击的按钮选择正确的操作.但是,它并不理想,因为输入按钮的值也是显示的文本.如果我想翻译这个应用程序,那么行动就会破裂.为了解决这个问题,我可以使用< button>元素,允许文本和值不同.但是,这个应用程序是用于Pocket IE,显然Pocket IE处理这些不同 – 它提交Command的两个值,这打破了行动. 因为这是针对Pocket IE的,所以我对JavaScript的处理方式也非常有限. Ajax已经出局,但我可以通过按钮’onClick设置隐藏字段. 所以,我的问题是在MVC视图中允许单个表单有多个按钮的最佳方法是什么?或者,我应该以某种方式将我的观点分解为多种形式吗? 解决方法
我会建议使用2种不同的动作的多种形式.我认为这也更容易测试:
(c => c.Search(),FormMethod.Get); (c => c.Send(),FormMethod.Post); 或类似的东西.然后在控制器中你有2个相应的动作.这意味着责任被打破了.使用MVC,您可以拥有多个表单,与Webforms不同.所以你可以挣脱! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在两个应用程序中拆分ASP.NET应用程序 – 处理共享页面/用户
- asp.net-mvc – 如何保持MVC JQuery Ajax POSTs DRY?
- asp.net – ANT和WAR文件的.NET等价物?
- asp.net-mvc-3 – 如何在Razor视图引擎中注册程序集
- ASP.NET MVC2模型验证失败,非美国日期格式
- asp.net – 导致GridView无效回发的TemplateField按钮
- 序列化 – Newtonsoft中的TypeNameHandling需要$type作为第
- ASP.NET 5中是否有缓存模式的指导
- ASP.NET AJAX日历扩展程序日期格式
- asp.net-mvc – ASP.Net MVC 2.0 Html.HiddenFor HtmlHelpe
- ASP.NET Core应用针对静态文件请求的处理[1]: 以
- asp.net – 新安装的IIS. Aspx页面不会显示
- asp.net-mvc-3 – mvc是否支持整个区域的Web.con
- asp.net-mvc – ASP.NET MVC,BDD,Specflow和Wati
- asp.net – FormsAuthentication.GetRedirectUrl
- asp.net-mvc – ASP.net Web API和System.Net.Ht
- AJAX分页的代码(后台asp.net)
- ASP.NET MVC 2 – 如何使用IgnoreRoute忽略整个目
- asp.net-mvc – Razor嵌套WebGrid
- asp.net-mvc – 在Global.asax中注入依赖项