首页 新闻 搜索 专区 学院

MVC4 更新Model视图无变化

0
[待解决问题]
// 控制器中代码   
public ActionResult Index() { var mdl = new DataImpMdl(); mdl.InfoText = "aaaa"; return View(mdl); } [HttpPost] public ActionResult Index(DataImpMdl mdl) { var r = Request.Files["ProductImage"]; mdl.InfoText = "bbb"; mdl.Index++; mdl.InfoText = mdl.Index + "--" + DateTime.Now; return View(mdl); }

view中代码

@{
    ViewBag.Title = "Index";
}
@model webManage.Models.DataImpMdl
    @using (Html.BeginForm())
    {
        @Html.Hidden("indexh",1);
        <input type="file" name="file" /><input type="submit" />
        
       

        @Html.TextBoxFor(p => p.Index)
        @Html.TextAreaFor(p=>p.InfoText)
    }

点提交按钮,只会保存第一次的输入并显示,不会累加,时间也显示不出来,这是啥情况呀

MVC
he69的主页 he69 | 菜鸟二级 | 园豆:217
提问于:2015-01-21 10:14
< >
分享
所有回答(2)
0

你每次都给传递的是1,会累加才怪了,@html.Hidden("",1),这里的1你给的是定制,他能给自加?

_Vegetables | 园豆:582 (小虾三级) | 2015-01-21 10:22

这个是我随意写的键和值,和model没有任何绑定,它不影响model的值呀

支持(0) 反对(0) he69 | 园豆:217 (菜鸟二级) | 2015-01-21 16:17

@he69: 既然是model里面的,你在httppost的时候值是改变了,但是你保存了吗?

支持(0) 反对(0) _Vegetables | 园豆:582 (小虾三级) | 2015-01-21 17:27
0

匹配的是第一个Index(),而每次你在里面都是直接new出来的,所以总是初始值。

比如这样

public ActionResult Index()

{

var mdl = session["key"] as     DataImpMdl;

if(mdl==null)

{mdl = new DataImpMdl();

mdl.InfoText = "aaaa"; return View(mdl); }

}

[HttpPost]

public ActionResult Index(DataImpMdl mdl) { var r = Request.Files["ProductImage"]; mdl.InfoText = "bbb"; mdl.Index++; mdl.InfoText = mdl.Index + "--" + DateTime.Now;session["key"]=mdl;

return View(); }

arg | 园豆:1047 (小虾三级) | 2015-01-21 14:41

点提交按钮是post呀,我跟踪进去,model值已经变了,跟踪到view里值也是正常的,就是显示的时候又回到第一次提交的信息。 怀疑是@Html.TextBoxFor 这个方法理解的不透切,直接用@Model.InfoText 也正常

支持(0) 反对(0) he69 | 园豆:217 (菜鸟二级) | 2015-01-21 16:15

@he69: 

要不你把第二个index里的方法copy一份到第一份看看

支持(0) 反对(0) arg | 园豆:1047 (小虾三级) | 2015-01-21 17:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册