2010-09-24 70 views
0

更新以下初始评论ASP.NET MVC模式内容消失随机

该模型有一个目的是在它被称为“帐户”,其中有一个int欢迎使用属性(Account.AccountID)

ViewB具有收集一些附加信息的形式 - 但也有一个填充了Model.Account.AccountID的文本框。

但是,当我提交ViewB时,Model.Account变为null。


它可能更容易表现出什么,我有一个简化版本之前,我解释一下这个问题:

[HttpGet] 
public ActionResult ViewA() 
{ 
    return View(new BlahModel()); 
} 

[HttpPost] 
public ActionResult ViewA(BlahModel model) 
{ 
    if(there_was_a_problem) 
    return View("ViewA", model); 
    else 
    return View("ViewB", model); 
} 

// have tried both httppost, httpget and no attribute here 
public ActionResult ViewB(BlahModel model) 
{ 
return View(model); 
} 

我通过GET加载ViewA,填补了强类型的表单并提交 - 那么下面的视图(如果请求没有问题,则再次ViewA或ViewB)是没问题的......它可以完全访问整个模型,并可以显示其中的属性。

问题是,如果我然后在ViewB中提交一个表单(其中发布到ActionResult ViewB) - 模型在整个过程中突然具有空属性,即使它使用相同的模型 - 并且在发布之前已经提取了所有价值成功。

任何想法?

非常感谢

+0

你有什么html对象在ViewB上,你会期望填充模型?在调试中运行,并看看response.form对象 – Clicktricity 2010-09-24 11:49:04

回答

1

最有可能的 - ViewB观点并没有呈现足够和模型绑定无法找到绑定的值。

动作参数是从表单值绑定的。如果您传递模型以正确查看,则无关紧要。渲染事情是重要的(或通过查询字符串/ cookies传递)。

+0

非常感谢,我检查了POST,然后从中发现有人设置了显示AccountID的文本框为'disabled' – isNaN1247 2010-09-24 11:59:09

1

补充Arnis L.'s answer,您可以使用像Firebug这样的工具来检查您的模型的参数(或任何参数)是否正沿请求发送。