【发布时间】:2013-01-21 18:57:39
【问题描述】:
是我……又一次!
我已经上了这些课,
public class PrankTargetArgumentViewModel
{
public PrankTarget Target { get; set; }
public PrankDefinition Prank { get; set; }
public List<PrankArgument> Arguments { get; set; }
}
public class PrankArgument
{
public string Name { get; set; }
public string Value { get; set; }
}
而我正在做的是 - 如果当前的 ParkDefinition 需要参数,他们会在保存到另一个应该处理参数收集的 Action 时执行 ActionRedirect
我的Action结果是这样的..
public ActionResult PrankArguments()
{
PrankInstance currentInstance = SessionContext.CurrentPrankInstance;
if (currentInstance == null)
throw new ArgumentNullException("currentInstance");
PrankTargetArgumentViewModel model = new PrankTargetArgumentViewModel();
model.Prank = currentInstance.Prank;
model.Target = currentInstance.Target;
string[] args = model.Prank.Arguments.Split('|');
model.Arguments = new List<PrankArgument>();
foreach (string s in args)
{
model.Arguments.Add(new PrankArgument { Name = s, Value = s });
}
return View(model);
}
我的http post方法只是一个带有PrankTargetArgumentViewModel参数的空方法
[HttpPost]
public ActionResult PrankArguments(PrankTargetArgumentViewModel model)
{
return View();
}
我的 HTML 是这样的..
@using (Html.BeginForm())
{
@Html.EditorFor(x => Model)
<p>
<input type="submit" value="Create" />
</p>
}
所以我的问题是,在 PrankArguments(PrankTargetArgumentViewModel model) 回发操作中,模型参数始终为空。我已经用负载值填充了对象,所以我猜他们会在回帖中包含我添加的新论点。
所以流程是这样的。
制造恶作剧 如果恶作剧需要参数,则加载 ActionResult PrankArguments() 向已填充的对象添加额外的参数。 保存,调用 ActionResult PrankArguments(PrankTargetArgumentViewModel 模型) -- 这就是问题所在,模型参数传回为null。
我遇到过这个问题好几次了,总是放弃,但这次我不会让这种情况发生!
任何帮助都会很棒!干杯,Ste!
附言。如果您需要我的代码,请告诉我。
编辑 - 删除了视图包调试属性!
【问题讨论】:
-
你的问题有点不清楚......你的意思是:“为什么 ViewBag.Model 在每个帖子上都为空?”
-
另外,为什么要在 ViewBag 上设置属性?
-
对不起,这纯粹是为了调试,我忘了删除。希望问题更清楚。
-
如果您调试您回发的操作,您的 Request.Form 对象包含什么?值是否已正确发布但未解析到模型中?
-
我查看了 Request.Forms 内容及其回发的 Request.Form = {argument.Value=Address&argument.Value=UnMute} 这是我正在寻找的值 - 它并不理想,但我可以和他们一起工作!