我的......再一次!
我得到了这些课程,
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
我的行动结果是这样的..
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模型)回发动作时,模型参数总是为空的。我已经用负载上的值填充了对象,所以我猜他们我会在帖子中找到我添加的新参数。
所以流程就是这样。
创造恶作剧 如果恶作剧需要参数,则加载 ActionResult PrankArguments() 为已经弹出的对象添加额外的参数。 保存,调用 ActionResult PrankArguments(PrankTargetArgumentViewModel模型) - 这就是问题所在,模型参数被传回null。
我已经有这个问题很多次了,而且总是放弃但是这次我不会让这种情况发生!
任何帮助都会很棒!欢呼,Ste!
聚苯乙烯。如果您需要我的代码,请告诉我。
编辑 - 删除了查看包调试属性!
答案 0 :(得分:0)
我认为,如果您的观点被强烈输入PrankTargetArgumentViewModel
,我理解正确,那么您需要做的就是检索值:
[HttpPost]
public ActionResult PrankArguments()
{
var pta = new PrankTargetArgumentViewModel();
TryUpdateModel(pta);
}
答案 1 :(得分:0)
在查看我自己的代码之后 - 我注意到我不需要整个PrankTargetArgumentViewModel,一个简单的参数列表就可以了。
我改变了我的PrankArguments视图以获取IEnumerable并使用;
@using (Html.BeginForm())
{
@Html.EditorForModel()
<p>
<input type="submit" value="Finish" />
</p>
}
然后我的回发方法签名就像这样
[HttpPost]
public ActionResult PrankArguments(IEnumerable<PrankArgument> arguments)
完全符合我的要求。
感谢所有建议人员。