网站模板页有个登陆的退出按钮,当点击时跳转到登陆页面。

 <button onclick="logout()" >退出</button>
$("#logOut").click(function () {
location.href = "@Url.Action("Logout", "Account")";
});

然后再某个页面楼主用了HTML辅助方法产生表单元素,代码如下所示:

@Html.BeginForm("ReturnFile", "File", FormMethod.Post, new { id = "exportForm" }))
{
<input type="hidden" id="exportString3" name="exportString3" />
<input type="hidden" id="fileName3" name="fileName3" />
}

如果页面中不存在上面方法产生的form,那么系统时可以正常使用退出按钮,但是,当两者同时出现时,点击按钮事件却一直跳向了form指向的controller。因为在其他页面退出没出现这种问题,所以楼主以为是form的问题。。。

首先开始查询HTML辅助方法产生表单元素,在界面上显示的html代码如下(多了一串System.Web.Mvc.Html.MvcForm)):

<form id="exportForm" method="post" action="/File/ReturnFile">
System.Web.Mvc.Html.MvcForm) {
<input id="exportString" type="hidden" name="exportString">
<input id="fileName" type="hidden" name="fileName">
}
</form>

如果直接使用form元素是又是没有问题。

解决办法1(直接使用html元素):

 <form method="POST" action="@Url.Action("ReturnFile", "File")" id="exportForm" >
<input type="hidden" id="exportString" name="exportString" />
<input type="hidden" id="fileName" name="fileName" />
</form>

下班后查了资料,发现是button没有显示定义type的类型,在不同的浏览器会有不同的属性,所以一定要加type="button"。

type 属性规定按钮的类型。提示:请始终为按钮规定 type 属性。Internet Explorer 的默认类型是 "button",而其他浏览器中(包括 W3C 规范)的默认值是 "submit"。

另外楼主的原本的form引用方法错误,居然没有报错。正确的使用方法如下:

A.使用@Html.BeginForm,@Html.EndForm(自定义id和name),网上说要用Html.EndForm()来关闭</form>表单,但是楼主测试的时候IE和火狐不加也会关闭

  @{ Html.BeginForm("ReturnFile", "File" , new { @id = string.Empty },FormMethod.Post,new { id = "exportForm", name = "exportForm" }); }
{
@Html.Hidden("exportString1")
@Html.Hidden("fileName1")
}
//不加也可
@{Html.EndForm();}

B.常用的用@using方式

 @using (Html.BeginForm("ReturnFile", "File", new { id = "exportForm" }))
{
<input type="hidden" id="exportString" name="exportString" />
<input type="hidden" id="fileName" name="fileName" />
}

MVC中使用内建的HTML辅助方法产生表单元素提交表单与button按钮事件的陷阱的更多相关文章

  1. shell中的内建命令, 函数和外部命令

    转自shell中的内建命令, 函数和外部命令 Shell识别三种基本命令:内建命令.Shell函数以及外部命令: (1)内建命令就是由Shell本身所执行的命令.    有些命令是由于其必要性才内建的 ...

  2. SQL点滴9—SQL Server中的事务处理以及SSIS中的内建事务

    原文:SQL点滴9-SQL Server中的事务处理以及SSIS中的内建事务 我们可以把SSIS中的整个package包含在一个事务中,但是如果在package的执行过程中有一个表需要锁定应该怎么处理 ...

  3. 【转】shell中的内建命令, 函数和外部命令

    原文:http://www.cnblogs.com/xkfz007/archive/2011/10/13/2209571.html linux命令有内部命令和外部命令之分.内部命令实际上是shell程 ...

  4. MVC中视图View向控制器传值的方法

    MVC中视图View向控制器传值的方法步骤如下: 1.index页面: 页面中只需要一个触发事件的按钮

  5. js面向对象自定义MyString()的构造器函数,实现内建String()属性和方法:

    js面向对象自定义MyString()的构造器函数,实现内建String()属性和方法: var s = new MyString('hello'); s.length; s[0]; // " ...

  6. .NET MVC中登录过滤器拦截的两种方法

    今天给大家介绍两种ASP中过滤器拦截的两种方法. 一种是EF 的HtppModule,另一种则是灵活很多针对MVC的特性类 Attribute 具体什么是特性类可以参考着篇文章:https://www ...

  7. ASP.NET MVC中为DropDownListFor设置选中项的方法

    在MVC中,当涉及到强类型编辑页,如果有select元素,需要根据当前Model的某个属性值,让Select的某项选中.本篇只整理思路,不涉及完整代码. □ 思路 往前台视图传的类型是List< ...

  8. HTML 中按钮作为form表单元素提交特性两则 --- 参HTML考标准分析

    相同name的submit 类型的input提交行为 描述 这种情况, <input type="submit" name="ACTION" value= ...

  9. MVC使用内建的Form辅助器方法创建Select元素

    第一种方法: List<SelectListItem> statusItems = new List<SelectListItem>();            statusI ...

随机推荐

  1. ghj

    如果对同一个元素的定义有多种,以最接近(最小一级)的定义为最优先,例如有这么一段代码 Update: Lorem ipsum dolor set 在CSS文件中,你已经定义了元素p,又定义了一个cla ...

  2. 推荐系统学习--cb+cf 初见

    对于推荐系统的推出有两个条件:1.信息过载 ,2用户没有明确的需求 推荐系统算法中常见的有基于内容推荐,协同过滤推荐,协同过滤还可以分为基于人的协同过滤,基于内容协同过滤:社会推荐等 如何理解这些推荐 ...

  3. 《C与指针》第十二章练习

    本章例程 //12.3 #include <stdio.h> #include <stdlib.h> typedef struct NODE{ struct NODE *lin ...

  4. System.DateUtils 4. IsValidDateTime... 有效时间判断

    编译版本:Delphi XE7 function IsValidDate(const AYear, AMonth, ADay: Word): Boolean;function IsValidTime( ...

  5. 逻辑操作符“&&”的三层理解

    第一层:操作符“&&”可以对两个布尔值进行逻辑与运算,返回一个布尔值. 第二层:操作符“&&”可以对两个真假值进行逻辑与运算,并且返回一个真假值. 第三层:操作符“&a ...

  6. xml报文的装配解析

    xstream dom 将map自动转化为xml报文 http://blog.csdn.net/lisheng19870305/article/details/45847985 报文的通信

  7. 自动化测试工具QTP的使用实例 分类: 软件测试 2015-06-17 00:23 185人阅读 评论(0) 收藏

    1. QTP简介 1.1QTP功能与特点 QTP是QuickTest Professional的简称,是一种自动化软件测试工具.在软件的测试过程中,QTP主要来用来通过已有的测试脚本执行重复的手动测试 ...

  8. CMD:在当前文件夹下打开cmd命令

    对于电脑老鸟而言,在使用windows系统的过程中,经常需要在cmd窗口中输入一些命令进行操作.但是如果每一次都是在cmd窗口中用CD命令进行相应的文件夹目录,实在不便,尤其是在文件夹层次比较多而且带 ...

  9. el表达式无法获取springmvc的model封装好的数据之解决方法

    近日碰到奇怪的问题,应该挺好解决的,可是就是卡住我两天 下面我来描述一下问题 用的是springmvc,自然需要controller,假设我现在所有的配置都是对的. controller代码 @Req ...

  10. zendstuido10 配置spket插件

    必备:Zend Studio.Spket Plugin.sdk.jsb3.百度 安装过程中出现了两种错误,导致最后安装spket时报错,一种是提示“The file "F:\study\to ...