【新手上路】MVC3.0 怀疑razor视图引发的奇怪现象(求解答)

理解ASP.NET MVC中UpdateModel与HTMLHelper作用
本文深入探讨了ASP.NET MVC框架中UpdateModel方法与HTMLHelper结合使用时,导致页面显示与实际赋值不一致的现象,并详细解释了这一现象背后的原因。

首先随便写一个实体类

    public class Student
    {
        public string Name { get; set; }
    }

然后添加两个action

        public ActionResult InsertStudent()
        {
            return View(new Student());
        }
        [HttpPost]
        public ActionResult InsertStudent(FormCollection forms)
        {
            Student stu = new Student();
            UpdateModel<Student>(stu);
            stu.Name = "张三";//改变updatemodel后的对象的属性的值
            return View(stu);//显示改变后的对象
        }

然后添加强类型razor视图

@model Teaching.Models.Student
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <title>InsertStudent</title>
</head>
<body>
    @using (Html.BeginForm())
    {
        @Html.TextBoxFor(model => model.Name)
        @Model.Name
        <input type="submit" value="OK" />
    }
</body>
</html>

奇怪结果

在页面中的文本框中输入“李四”,然后点击ok按钮提交后,结果:页面的文本框中显示的仍然是“李四”,文本框后面则输出“张三”。

若注释掉“UpdateModel<Student>(stu);”后,重复以上操作,结果:页面的文本框及文本框后面都输出修改后的“张三”。

问:文本框后面两次输出的都是修改后的“张三”,说明从后台传到前台的值都是修改后的值“张三”,那为什么用了updatemodel之后,使用htmlhelper显示的还是修改之前的值呢?怀疑是razor视图机制引起的。请大家帮忙解释下。

 

转载于:https://www.cnblogs.com/liuxinqi/archive/2012/05/01/2477474.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值