// 控制器中代码
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) }
点提交按钮,只会保存第一次的输入并显示,不会累加,时间也显示不出来,这是啥情况呀
你每次都给传递的是1,会累加才怪了,@html.Hidden("",1),这里的1你给的是定制,他能给自加?
这个是我随意写的键和值,和model没有任何绑定,它不影响model的值呀
@he69: 既然是model里面的,你在httppost的时候值是改变了,但是你保存了吗?
匹配的是第一个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(); }
点提交按钮是post呀,我跟踪进去,model值已经变了,跟踪到view里值也是正常的,就是显示的时候又回到第一次提交的信息。 怀疑是@Html.TextBoxFor 这个方法理解的不透切,直接用@Model.InfoText 也正常
@he69:
要不你把第二个index里的方法copy一份到第一份看看