ASP.NET MVC的问题 load form困扰我很久了 我主要是想在a.aspx里面使用jquery load方法加载b.aspx,在b页中包含一个form,当我在a页里面提交的时候,怎么防止浏览器跳转呢?这个问题困扰我很久了,mvcjquery浏览器 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 iframe你的问题不是mvc,是webform b.aspx也用AJAX实现表单数据的提交。 我用的是MVC,只不过视图里面的文件都是带了ASPX后缀,所以我这样写了的,主要是我在a里面用load装载b页(里面包括form,submit提交按钮),然后提交,这样浏览器会自动跳转到form的action地址,我试过在b页里面用ajaxSubmit提交方式,但是这样又提交不成功的,我试了很多次,iframe倒是有过用这个的想法,我用load方法把页面装入div里面了,如果别的办法不行,只有用iframe了 为了测试我用过很多方法了(1)我把使用ajaxsubmit提交方式的代码写在b页中的,我直接访问b页,这样能保证浏览器不跳转(2)但是我把b页装载进a页的时候,为了保证提交的话,浏览器还是要跳转都不知道怎么弄好的 这是 装在的 dd是一个部分视图 dd页面 运行效果 写错了 这是Index 页面 用来装在 dd页面(dd是一个部分视图) 谢谢你!我用你的方法单独写了个测试例子,能够不跳转,但是在我的项目中,有以下两个控制器的操作public ActionResult StaffEdit(int id) { SqlStaff sqlstaff = new SqlStaff(); Staff staff=sqlstaff.GetStaffByID(id); this.ViewBag.staff = staff; //设置部门下拉按钮 SqlDep sqldep = new SqlDep(); List<Dep> listdep = sqldep.GetAllDep(); List<SelectListItem> depitems = new List<SelectListItem>(); foreach (Dep dep in listdep) { depitems.Add(new SelectListItem { Text = dep.Dep_Name, Value = dep.Dep_Name }); } for(int i=0;i<depitems.Count;i++) { if (depitems[i].Text == staff.Staff_Dep) { depitems[i].Selected = true; break; } } this.ViewBag.listdep = depitems; //设置职位下拉按钮 SqlPos sqlpos = new SqlPos(); List<Pos> listpos = sqlpos.GetAllPos(); List<SelectListItem> positems = new List<SelectListItem>(); foreach (Pos pos in listpos) { positems.Add(new SelectListItem { Text = pos.Pos_Name, Value = pos.Pos_Name }); } for (int i = 0; i < positems.Count; i++) { if (positems[i].Text == staff.Staff_Post) { positems[i].Selected = true; break; } } this.ViewBag.listpos = positems; return PartialView();} [HttpPost] public EmptyResult StaffEdit() { var staff = new Staff(); try { staff.Staff_ID = Convert.ToInt32(Request.Form["Staff_ID"]); staff.Staff_Name = Request.Form["Staff_Name"]; staff.Staff_Gend = Request.Form["Staff_Gend"]; staff.Staff_EntryTime = Convert.ToDateTime(Request.Form["EntryTime"]); staff.Staff_Dep = Request.Form["listdep"]; staff.Staff_Post = Request.Form["listpos"]; // TODO: Add update logic here if (ModelState.IsValid) { SqlStaff sqlstaff = new SqlStaff(); sqlstaff.Update(staff); } return new EmptyResult(); } catch { return new EmptyResult(); } }以下是那个分部视图的代码<script type="text/jscript"> $("#EntryTime").datebox({ required: true, formatter: function (date) { var y = date.getFullYear(); var m = date.getMonth() + 1; var d = date .getDate(); return y + '-' + m + '-' + d; }, parser: function (date) { return new Date(Date.parse(date.replace(/-/g, "/"))); } }) $(document).ready(function () { $("#sub").live("click", function (event) { event.preventDefault(); $.post("/StaffMana/StaffEdit", { Staff_ID: $("#Staff_ID").val(), Staff_Name: $("#Staff_Name").val(), Staff_Gend: $("#Staff_Gend").val(), EntryTime: $("#EntryTime").val(), listdep: $("#listdep").val(), listpos: $("#listpos").val() }); }); /* $("#myform").submit(function () { debugger; $(this).ajaxSubmit(); return false; }); */ }); </script><%Html.BeginForm("StaffEdit", "StaffMana");%><% var staff = this.ViewBag.staff as CheckAttendance.Models.Staff; var listdep = this.ViewBag.listdep as List<SelectListItem>; var listpos = this.ViewBag.listpos as List<SelectListItem>;%><table> <tr> <td> 用户ID:<%: staff.Staff_ID %> <%:Html.Hidden("Staff_ID",staff.Staff_ID.ToString()) %> </td> <td> 姓名:<%: staff.Staff_Name %> <%:Html.Hidden("Staff_Name",staff.Staff_Name) %> </td> </tr> <tr> <td> 性别:<%: staff.Staff_Gend %> <%:Html.Hidden("Staff_Gend",staff.Staff_Gend) %> </td> <td> 入行时间:<%:Html.TextBox("EntryTime",staff.Staff_EntryTime.Date.ToString("yyyy-MM-dd"),new { @class="easyui-datebox"}) %> </td> </tr> <tr> <td> 部门:<%:Html.DropDownList("listdep")%> </td> <td> 职位:<%: Html.DropDownList("listpos")%> </td> </tr></table><input id="sub" type="submit" value="提交" /><% Html.EndForm();%>虽然我在 $.post("/StaffMana/StaffEdit", { Staff_ID: $("#Staff_ID").val(), Staff_Name: $("#Staff_Name").val(), Staff_Gend: $("#Staff_Gend").val(), EntryTime: $("#EntryTime").val(), listdep: $("#listdep").val(), listpos: $("#listpos").val() });里面把url写成了"/StaffMana/StaffEdit",但是提交后,浏览器跳转的地址变成了这个地址是我查询,输出数据到分部视图的地址。现在还是搞不懂 你这部分的代码 好像有误 你先吧这段代码 注释掉 然后再 post里写个 回调函数 看看 是否能弹出一个alert() 如果可以 拿就是你那段代码的错误 我觉得 你应该吧这段代码 写在这个 里边 好像 凡是 用到jquery的选择器 都应该写在 $(function(){ ....... }); 我的[httppost] StaffEdit这个函数没得返回值,而且,$.post能够正确提交的,因为数据库里面的东西都修改了的 问题解决了,是由于我把<script type="text/javascript">,写成了<script type="text/jscript">,导致浪费了我好长时间的啊 如何固定浮动div ? 请教一个奇怪的问题 对DataTable进行动态的行转列处理 asp.net网站上传到空间后能查看,删除,修改,不能添加 关于直接向LPT口灌数据打印条码 如何在客户端通过单击按钮进入到别的网站? 无法打开Web项目。文件路径与URL不符。这两者需要映射到相同的服务器位置。HTTP错误404:Object Not Found 无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。 如何动态添加控件,应经没分了。谢谢!! 共享数据连接的问题 急~!~!求助!一般处理程序验证码问题~! 如何实现ASP.NET网页内容的打印呀。
你的问题不是mvc,是webform
(1)我把使用ajaxsubmit提交方式的代码写在b页中的,我直接访问b页,这样能保证浏览器不跳转
(2)但是我把b页装载进a页的时候,为了保证提交的话,浏览器还是要跳转
都不知道怎么弄好的
dd页面 运行效果
我用你的方法单独写了个测试例子,能够不跳转,
但是在我的项目中,有以下两个控制器的操作
public ActionResult StaffEdit(int id)
{
SqlStaff sqlstaff = new SqlStaff();
Staff staff=sqlstaff.GetStaffByID(id);
this.ViewBag.staff = staff;
//设置部门下拉按钮
SqlDep sqldep = new SqlDep();
List<Dep> listdep = sqldep.GetAllDep(); List<SelectListItem> depitems = new List<SelectListItem>();
foreach (Dep dep in listdep)
{
depitems.Add(new SelectListItem { Text = dep.Dep_Name, Value = dep.Dep_Name });
}
for(int i=0;i<depitems.Count;i++)
{
if (depitems[i].Text == staff.Staff_Dep)
{
depitems[i].Selected = true;
break;
}
}
this.ViewBag.listdep = depitems;
//设置职位下拉按钮
SqlPos sqlpos = new SqlPos();
List<Pos> listpos = sqlpos.GetAllPos(); List<SelectListItem> positems = new List<SelectListItem>();
foreach (Pos pos in listpos)
{
positems.Add(new SelectListItem { Text = pos.Pos_Name, Value = pos.Pos_Name });
}
for (int i = 0; i < positems.Count; i++)
{
if (positems[i].Text == staff.Staff_Post)
{
positems[i].Selected = true;
break;
}
}
this.ViewBag.listpos = positems;
return PartialView();}
[HttpPost]
public EmptyResult StaffEdit()
{
var staff = new Staff();
try
{
staff.Staff_ID = Convert.ToInt32(Request.Form["Staff_ID"]);
staff.Staff_Name = Request.Form["Staff_Name"];
staff.Staff_Gend = Request.Form["Staff_Gend"];
staff.Staff_EntryTime = Convert.ToDateTime(Request.Form["EntryTime"]);
staff.Staff_Dep = Request.Form["listdep"];
staff.Staff_Post = Request.Form["listpos"];
// TODO: Add update logic here
if (ModelState.IsValid)
{
SqlStaff sqlstaff = new SqlStaff();
sqlstaff.Update(staff);
}
return new EmptyResult();
}
catch
{
return new EmptyResult();
}
}以下是那个分部视图的代码
<script type="text/jscript">
$("#EntryTime").datebox({
required: true,
formatter: function (date) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
var d = date
.getDate();
return y + '-' + m + '-' + d;
},
parser: function (date) {
return new Date(Date.parse(date.replace(/-/g, "/")));
}
}) $(document).ready(function () {
$("#sub").live("click", function (event) {
event.preventDefault();
$.post("/StaffMana/StaffEdit", {
Staff_ID: $("#Staff_ID").val(),
Staff_Name: $("#Staff_Name").val(),
Staff_Gend: $("#Staff_Gend").val(),
EntryTime: $("#EntryTime").val(),
listdep: $("#listdep").val(),
listpos: $("#listpos").val()
}); }); /* $("#myform").submit(function () {
debugger;
$(this).ajaxSubmit();
return false;
});
*/
});
</script>
<%Html.BeginForm("StaffEdit", "StaffMana");%>
<% var staff = this.ViewBag.staff as CheckAttendance.Models.Staff;
var listdep = this.ViewBag.listdep as List<SelectListItem>;
var listpos = this.ViewBag.listpos as List<SelectListItem>;%>
<table>
<tr>
<td>
用户ID:<%: staff.Staff_ID %>
<%:Html.Hidden("Staff_ID",staff.Staff_ID.ToString()) %>
</td>
<td>
姓名:<%: staff.Staff_Name %>
<%:Html.Hidden("Staff_Name",staff.Staff_Name) %>
</td>
</tr>
<tr>
<td>
性别:<%: staff.Staff_Gend %>
<%:Html.Hidden("Staff_Gend",staff.Staff_Gend) %>
</td>
<td>
入行时间:<%:Html.TextBox("EntryTime",staff.Staff_EntryTime.Date.ToString("yyyy-MM-dd"),new { @class="easyui-datebox"}) %>
</td>
</tr>
<tr>
<td>
部门:<%:Html.DropDownList("listdep")%>
</td>
<td>
职位:<%: Html.DropDownList("listpos")%>
</td>
</tr>
</table>
<input id="sub" type="submit" value="提交" />
<% Html.EndForm();%>
虽然我在 $.post("/StaffMana/StaffEdit", {
Staff_ID: $("#Staff_ID").val(),
Staff_Name: $("#Staff_Name").val(),
Staff_Gend: $("#Staff_Gend").val(),
EntryTime: $("#EntryTime").val(),
listdep: $("#listdep").val(),
listpos: $("#listpos").val()
});里面把url写成了"/StaffMana/StaffEdit",但是提交后,浏览器跳转的地址变成了
这个地址是我查询,输出数据到分部视图的地址。
现在还是搞不懂
我觉得 你应该吧这段代码 写在这个 里边