- 浏览: 1022908 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (445)
- Java (22)
- J2EE (18)
- Flex (102)
- Flex-blazeds (1)
- Flex-FABridge (2)
- Flex4 (3)
- CheckStyle (2)
- PowerDesigner (0)
- POI (2)
- Java2Word (2)
- 杂项 (15)
- 日记 (3)
- 数据库-oracle (41)
- 数据库-SQLServer (7)
- 中间件 (1)
- 英语 (8)
- C# (43)
- ASP.net (72)
- ASP.net MVC (28)
- 微软-Entity Framework (19)
- JavaScript (22)
- JQuery (31)
- EasyUI (3)
- VS2010 (4)
- CVS (1)
- Tomcat (3)
- Linux (1)
- 遗留问题 (1)
- iphone (1)
- MAC (0)
- 系统 (2)
- Web Service (4)
- Cache Manager (1)
- PMP (1)
- WCF (10)
- BootstrapJs (1)
- Web API (6)
- Go语言 (0)
- 网络协议 (2)
- Redis (10)
- RabbitMQ (10)
- Git (3)
- Kafka (5)
- ELK (5)
- Nginx (3)
- 测试 (2)
最新评论
-
ygm0720:
Table行拖拽自己实现 -
程乐平:
Flex4开发视频教程(27集)下载http://bbs.it ...
Flex4教程 -
liuweihug:
Jquery+asp.net 后台数据传到前台js进行解析的办 ...
AJAX $.toJSON的用法或把数组转换成json类型 -
weilikk:
谢谢谢谢!!
javascript IE下不能用 trim函数解决方法 -
gxz1989611:
vigiles 写道请问楼主:[Fault] exceptio ...
blazeds推送技术至Flex
有时候会遇到这种情况:在一个表单上需要多个按钮来完成不同的功能,比如一个简单的审批功能。
如果是用webform那不需要讨论,但asp.net mvc中一个表单只能提交到一个Action处理,相对比较麻烦点。
方法一:使用客户端脚本
比如我们在View中这样写:
<input type="submit" value="审核通过" onclick='this.form.action="<%=Url.Action("Action1") %>";' /> <input type="submit" value="审核不通过" onclick='this.form.action="<%=Url.Action("Action2") %>";' /> <input type="submit" value="返回" onclick='this.form.action="<%=Url.Action("Action3") %>";' />
在点击提交按钮时,先改变Form的action属性,使表单提交到按钮相应的action处理。
但有的时候,可能Action1和2的逻辑非常类似,也许只是将某个字段的值置为1或者0,那么分开到二个action中又显得有点多余了。
方法二:在Action中判断通过哪个按钮提交
在View中,我们不用任何客户端脚本处理,给每个提交按钮加好name属性:
<input type="submit" value="审核通过" name="action" /> <input type="submit" value="审核不通过" name="action"/> <input type="submit" value="返回" name="action"/>
然后在控制器中判断:
[HttpPost] public ActionResult Index(string action /* 其它参数*/) { if (action=="审核通过") { // } else if (action=="审核不通过") { // } else { // } }
几年前写asp代码的时候经常用这样的方法…
View变得简单的,Controller复杂了。
太依赖说View,会存在一些问题。假若哪天客户说按钮上的文字改为“通过审核”,或者是做个多语言版的,那就麻烦了。
参考:http://www.ervinter.com/2009/09/25/asp-net-mvc-how-to-have-multiple-submit-button-in-form/
方法三:使用ActionSelector
关于ActionSelector的基本原理可以先看下这个POST使用ActionSelector控制Action的选择 。
使用此方法,我们可以将控制器写成这样:
[HttpPost] [MultiButton("action1")] public ActionResult Action1() { // return View(); } [HttpPost] [MultiButton("action2")] public ActionResult Action2() { // return View(); }
在 View中:
<input type="submit" value="审核通过" name="action1" /> <input type="submit" value="审核不通过" name="action2"/> <input type="submit" value="返回" name="action3"/>
此时,Controller已经无须依赖于按钮的Value值。
MultiButtonAttribute的定义如下:
public class MultiButtonAttribute : ActionNameSelectorAttribute { public string Name { get; set; } public MultiButtonAttribute(string name) { this.Name = name; } public override bool IsValidName(ControllerContext controllerContext, string actionName, System.Reflection.MethodInfo methodInfo) { if (string.IsNullOrEmpty(this.Name)) { return false; } return controllerContext.HttpContext.Request.Form.AllKeys.Contains(this.Name); } }
方法四、改进
Thomas Eyde 就方法三的方案给出了个改进版:
Controller:
[HttpPost] [MultiButton(Name = "delete", Argument = "id")] public ActionResult Delete(string id) { var response = System.Web.HttpContext.Current.Response; response.Write("Delete action was invoked with " + id); return View(); }
View:
<input type="submit" value="not important" name="delete" /> <input type="submit" value="not important" name="delete:id" />
MultiButtonAttribute定义:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)] public class MultiButtonAttribute : ActionNameSelectorAttribute { public string Name { get; set; } public string Argument { get; set; } public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo) { var key = ButtonKeyFrom(controllerContext); var keyIsValid = IsValid(key); if (keyIsValid) { UpdateValueProviderIn(controllerContext, ValueFrom(key)); } return keyIsValid; } private string ButtonKeyFrom(ControllerContext controllerContext) { var keys = controllerContext.HttpContext.Request.Params.AllKeys; return keys.FirstOrDefault(KeyStartsWithButtonName); } private static bool IsValid(string key) { return key != null; } private static string ValueFrom(string key) { var parts = key.Split(":".ToCharArray()); return parts.Length < 2 ? null : parts[1]; } private void UpdateValueProviderIn(ControllerContext controllerContext, string value) { if (string.IsNullOrEmpty(Argument)) return; controllerContext.Controller.ValueProvider[Argument] = new ValueProviderResult(value, value, null); } private bool KeyStartsWithButtonName(string key) { return key.StartsWith(Name, StringComparison.InvariantCultureIgnoreCase); } }
如果是在MVC 2.0中的话,将UpdateValueProviderIn方法改为:
private void UpdateValueProviderIn(ControllerContext controllerContext, string value) { if (string.IsNullOrEmpty(Argument)) return; controllerContext.RouteData.Values[this.Argument] = value; }
发表评论
-
asp.net mvc处理css和js版本问题
2018-05-24 16:40 1399当服务的修改了js和css内容后,发布到II ... -
分布式系统调用链监控
2018-02-22 14:36 863分布式系统调用链监 ... -
使用C# 和Consul进行分布式系统协调
2017-05-11 10:41 1305随着大数据时代的到来,分布式是解决大数据问题的一个主要手段, ... -
权限控制
2016-06-16 11:09 799权限控制就是分为“用户登录身份验证”、“控制器方法权限控制” ... -
[ASP.NET MVC ]13 - Helper Method
2016-06-15 13:44 623我们平时编程写一些辅助类的时候习惯用“XxxHelper”来 ... -
[ASP.NET MVC]14 - Unobtrusive Ajax
2016-06-15 12:46 671Ajax (Asynchronous JavaScript ... -
[ASP.NET MVC ]08 - Area 使用
2016-06-15 12:28 786ASP.NET MVC允许使用 Area(区域)来组织Web ... -
将ASP.NET MVC中的form提交改为ajax提交
2016-06-01 15:51 2454在ASP.NET MVC视图中通过 @using (Htm ... -
@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别
2016-06-01 14:02 1041ASP.NET MVC 中@Html.Partial,@Ht ... -
Fiddler 模拟http form提交
2016-04-19 10:01 1663以下为代码部分 下面是fiddler调用此form ... -
MVC3 验证码
2011-11-07 14:30 1585MVC3开发,看附件 -
MVC 分页 JQuery Pager
2011-11-07 13:00 3206导入的包 <script type=" ... -
ASP.NET MVC - Creating a SelectListItem with the disabled="disabled" attribute
2011-10-24 15:07 1489要完成这样的效果 <option disabled=& ... -
希望大家告诉我一些关于.net MVC3 MVC2的书籍
2011-10-21 16:36 1492大家好,小弟进入微软时间不久,正在学习微软的MVC3,但是基本 ... -
Jquery与.net MVC结合,通过Ajax
2011-10-14 09:55 2643在工作中做了这么一个东西。 Html端: @using T ... -
Radio Button and CheckBox在FireFox中刷新自动改变选中项
2011-08-29 12:54 2788今天开发过程中出现了这样一个问题,我选中radio butto ... -
jQuery Supertextarea Plugin
2011-08-18 11:46 1284http://truthanduntruth.com/deve ... -
详解ASP.NET MVC中DropDownList的使用
2011-07-27 17:27 2251本文我们将讲解DropDownList的使用,这在ASP.NE ... -
MVC ASP页面叫Control的各种方法
2011-07-11 15:43 1647<%@ Control Language="C ... -
ASP.NET MVC 学习: 视图
2011-07-07 16:24 1846用视图呈现UI 视图可以不包含任何应用逻辑或者数据库 ...
相关推荐
总的来说,通过MSI文件安装ASP.NET MVC是一种便捷的方法,尤其适合那些不熟悉命令行安装或者需要在多台计算机上部署的用户。不过,了解安装过程中的每个步骤和可能的配置选项,有助于确保顺利、高效地使用这一强大的...
3. **AJAX请求**:jQuery的$.ajax方法可以与ASP.NET MVC的Action方法配合,实现异步数据交互。 4. **自定义主题**:jQuery Mobile允许自定义主题,这与ASP.NET MVC的视图模板相结合,可以打造出独特的应用风格。 5. ...
在ASP.NET MVC3中,实现分页通常涉及到以下几个步骤: - **路由配置**:确保URL结构支持分页参数,如`/Controller/Action/PageNumber`。 - **控制器**:在控制器中,根据请求的页码获取对应页的数据,这通常通过...
因此,了解如何在*** MVC中实现多个按钮提交就显得十分必要。以下是几种实现多个按钮提交的方法。 方法一:使用客户端脚本 此方法通过在HTML表单中的每个按钮元素上添加onclick事件处理器来改变表单的action属性。...
综上所述,这个"ASP.NET开发的Bug跟踪管理系统"涵盖了从用户交互到后端数据处理的多个层面,是学习ASP.NET Web应用开发的一个实用案例。通过深入研究这个系统,开发者可以了解到如何利用ASP.NET构建一个功能完善的...
在本项目中,我们将深入探讨如何使用Ext JS MVC框架与Asp.Net MVC 3结合,构建一个简单的CMS(内容管理系统)后台,特别是关注用户管理功能。这个教程将分为多个步骤,帮助开发者逐步理解这两个强大的技术如何协同...
《基于ASP.NET+Web+MVC4.0 EasyUI的建材管理系统源码解析》 在IT行业中,构建高效、安全的管理系统是企业信息化建设的重要环节。本文将详细探讨一款基于ASP.NET、Web以及MVC4.0框架,结合EasyUI进行界面设计的开源...
这些实验代码可能会涵盖以上一个或多个方面,通过实践这些代码,你可以更好地掌握ASP.NET的精髓,提升自己的编程技能。同时,"尚俊杰"可能是一位知名的ASP.NET讲师或教材作者,他的材料通常质量较高,值得深入研究。...
5. 多语言视图:在ASP.NET MVC框架中,可以使用视图本地化,即为每个语言创建一个视图,或者使用共享视图和局部视图来实现多语言。视图中的文本可以通过 Razor 语法`@Resources.WelcomeMessage`来引用资源文件。 6....
与ASP.NET一样,每种语言对应一个资源文件,通常存储在Properties目录下的Resources.Designer.cs文件中。使用`ResourceManager`类,可以在运行时根据用户的系统设置或手动选择加载正确的资源。 为了实现WinForm的多...
开发者会创建一个或多个ASP.NET Web Form页面,作为聊天室的前端界面。 聊天室的核心功能包括用户登录、发送消息和显示历史消息。在ASP.NET中,这些可以通过HTTP POST请求来实现。用户输入的消息会被封装到HTTP请求...
- **理解ASP.NET MVC Routing**:路由是ASP.NET MVC中的一个重要概念,用于确定如何根据URL来选择合适的控制器和动作方法。 - **在DinnersController控制器中使用DinnerRepository**:通过注入DinnerRepository实例...
此外,ASP.NET还包括ASP.NET MVC(Model-View-Controller)和ASP.NET Web API,它们是两种不同的架构模式。MVC模式将应用程序分为模型、视图和控制器三个部分,鼓励松耦合和测试驱动开发。而Web API则专注于构建...
6. **MVC模式**:ASP.NET MVC 模式是一种轻量级、基于模式的Web应用程序架构,提供更好的代码组织和测试能力。 通过这些模板,开发者可以了解到如何将ASP.NET的特性与实际的网页设计相结合,实现美观且功能丰富的...
在这个项目中,我们用ASP.NET来设计和实现网站的首页,这通常包括网站的导航、主要内容区域和一些动态更新的内容。 首先,数据库的选择至关重要。在这个案例中,我们使用了两种不同的数据库系统:SQL Server 2005和...
8. **MVC模式**:ASP.NET MVC(Model-View-Controller)是一种设计模式,鼓励分离关注点,使代码更易于测试和维护。它提供了比传统的Web Forms更灵活的开发方式。 9. **部署和配置**:学习如何配置IIS服务器,发布...
3. **控件和事件处理**:介绍ASP.NET中的服务器控件,如按钮、文本框等,以及它们的事件模型,如何通过代码处理用户交互。 4. **数据绑定**:讨论如何将数据库或其他数据源的数据绑定到控件,展示和编辑数据。可能...
2. **控件和事件模型**:在ASP.NET 2.0中,服务器控件提供了一种直观的方式来创建动态网页。学习者将了解如何使用各种内置控件,如文本框、按钮、复选框等,并理解控件之间的事件交互,如点击事件、提交事件等。 3....
在ASP.NET编程中,你将学习到以下几个核心知识点: 1. **.NET Framework**: ASP.NET是.NET Framework的一部分,它提供了运行时环境,用于执行ASP.NET代码。.NET Framework包括基础类库、公共语言运行时(CLR)以及...
9. **UI设计**:使用ASP.NET MVC或Web Forms,配合Bootstrap或其他前端框架,可以创建一个美观易用的界面,展示文件列表,提供操作按钮。 10. **数据库集成**:为了记录文件元信息,如上传时间、大小、用户等,可以...