求助MVC4 修改个人信息submit,没有post到Modify方法

zjut_acm 2015-08-22 11:05:00
求大神帮助!!

修改个人信息 部分字段

表现: 修改个人信息点击save,原本应该跳转到Index.cshtml,但只在原页面刷新了一下,数据没有更改。

已经把RetireeModel的验证去掉了,自己测试了一下是感觉Modify没有进去,点击save,没有post到Modify方法


也测试用了其他字段比较少的Model,修改后save居然是可行的!! 也不知道是不是RetireeModel字段比较多的原因? 求解!




这是view 代码
@model MvcSilverTalent.Models.RetireeModel

@{
Layout = null;
}

<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Edit</title>
</head>
<body>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)

<fieldset>
<legend>RetireeModel</legend>

@Html.HiddenFor(model => model.RetireNum)

<div class="editor-label">
@Html.LabelFor(model => model.Specialty)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Specialty)
@Html.ValidationMessageFor(model => model.Specialty)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.Address)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Address)
@Html.ValidationMessageFor(model => model.Address)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.HomeTel)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.HomeTel)
@Html.ValidationMessageFor(model => model.HomeTel)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.MobileNum)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MobileNum)
@Html.ValidationMessageFor(model => model.MobileNum)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.ZipCode)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ZipCode)
@Html.ValidationMessageFor(model => model.ZipCode)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.Email)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
</div>

<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
</body>
</html>




这是controllor 代码


//
// GET: /UserInfo/Edit.cshtml

public ActionResult Edit(int RetireNum)
{
RetireeModel RetireeModel = db.RetireeModels.Find(RetireNum);
if (RetireeModel == null)
{
return HttpNotFound();
}
return View(RetireeModel);
}


//
// POST: /UserInfo/Edit.cshtml

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Modify(RetireeModel RetireeModel)
{
Response.Write("<script>alert('dddd')</script>"); // 没有运行这句话
if (ModelState.IsValid)
{
db.Entry(RetireeModel).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
Response.Write("<script>alert('xxxx')</script>"); // 没有运行这句话
return View(“Index”); // 也没有跳转到Index.cshtml,只是在原页面刷新了一下,数据没有更改
}



这是Model
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;

namespace MvcSilverTalent.Models
{
public class RetireeModel
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int RetireNum { get; set; }

[Required]
[DisplayName("单位编号")]
[MaxLength(3)]
public string UnitID { get; set; }

[Required]
[DisplayName("员工编号")]
[MaxLength(6)]
public string EmployeeID { get; set; }

[Required]
[DisplayName("离退休类型")]
public int RetireType { get; set; }

[Required]
[DisplayName("删除标记")]
public int DeleteFlag { get; set; }


//
// 基本信息


[Required]
[DisplayName("姓名")]
[MaxLength(20)]
public string Name { get; set; }

[Required]
[DisplayName("性别")]
public Boolean Gender { get; set; }

[Required]
[DisplayName("身份证号码")]
public string IDCardNo { get; set; }

[Required]
[DisplayName("出生年月")]
public DateTime Brityday { get; set; }

[Required]
[DisplayName("民族")]
[MaxLength(30)]
public string Nationality { get; set; }

[Required]
[DisplayName("籍贯")]
[MaxLength(30)]
public string NativePlace { get; set; }

[DisplayName("党派")]
[MaxLength(30)]
public string Party { get; set; }

[DisplayName("所在党支部")]
[MaxLength(100)]
public string PartyBranch { get; set; }

[DisplayName("最高学历")]
[MaxLength(20)]
public string EducationDegree { get; set; }

[Required]
[DisplayName("用户组")]
public string GroupName { get; set; }

[Required]
[DisplayName("是否参加爱心基金")]
public Boolean HasLoveFund { get; set; }

[DisplayName("享受爱心基金慰问情况")]
public string LoveFundCase { get; set; }

[DisplayName("慰问走访情况")]
public string VisitCase { get; set; }


//
// 工作信息


[Required]
[DisplayName("参加工作时期")]
public int WorkPeriod { get; set; }

[Required]
[DisplayName("参加工作时间")]
public DateTime WorkTime { get; set; }

[Required]
[DisplayName("退休时间")]
public DateTime RetireTime { get; set; }

[Required]
[DisplayName("工龄")]
public int WorkAge { get; set; }

[Required]
[DisplayName("退休单位")]
[MaxLength(100)]
public string UnitName { get; set; }

[DisplayName("职称代码")]
[MaxLength(3)]
public int TitleID { get; set; }

[DisplayName("职称")]
[MaxLength(30)]
public string Title { get; set; }

[DisplayName("职务")]
[MaxLength(30)]
public string Position { get; set; }

[DisplayName("编制")]
[MaxLength(30)]
public string Formation { get; set; }


//
// 可修改信息


[Required]
[MaxLength(255)]
[DisplayName("近照")]
public string PhotoUrl { get; set; }

[MaxLength(255)]
[DisplayName("特长")]
public string Specialty { get; set; }

[Required]
[MaxLength(255)]
[DisplayName("现住地址")]
public string Address { get; set; }

[MaxLength(30)]
[DisplayName("家庭电话")]
public string HomeTel { get; set; }

[MaxLength(30)]
[DisplayName("手机号码")]
public string MobileNum { get; set; }

[MaxLength(10)]
[DisplayName("邮政编码")]
public string ZipCode { get; set; }

[MaxLength(40)]
[DisplayName("邮箱")]
public string Email { get; set; }


public virtual ICollection<EventSignModel> EventSignModels { get; set; }
public virtual ICollection<HealthSignMain> HealthSignMains { get; set; }
}
}
...全文
156 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
likevs 2015-08-24
  • 打赏
  • 举报
回复
Html.BeginForm() 你这里生成表单的方式不对,楼主,你这样子生成的话,这个表单的action是指向生成这个视图的方法啊,也就是指向的是index方法,而不是你想要的Modify方法,所以,你得按楼上的说明,改这里生成表单才得,就是,你要告诉它,点击【保存】按钮后,想要调用哪个方法名,比如Modify
zjut_acm 2015-08-23
  • 打赏
  • 举报
回复
刚按你的方法试了一下,还是不行啊
devmiao 2015-08-23
  • 打赏
  • 举报
回复
@using (Html.BeginForm(你的地址))
我为IT而生 2015-08-23
  • 打赏
  • 举报
回复
你的错误 很明显 是model设置的字段有问题 然后你在@using (Html.BeginForm(“action的名字”,“控制器的名字”,提交的方法(也就是post))) 你再这样试试
zjut_acm 2015-08-23
  • 打赏
  • 举报
回复
找出来了,是post方法名字写错了 --! 但又出现了新的问题: 无法将类型为“System.Int32”的对象强制转换为类型“System.Array”。 说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidCastException: 无法将类型为“System.Int32”的对象强制转换为类型“System.Array”。 源错误: 执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 是不是Model设置有问题?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧