【发布时间】:2012-07-07 14:45:03
【问题描述】:
我需要在 Post 操作中获取我的模型属性,因此需要为它们隐藏元素,但我遇到了 Dictionary <string, string> 类型的问题。这是我的模特:
public class ViewModel{
...
public ViewPart ViewPart { get; set; }
}
public class ViewPart {
...
public Dictionary<string, string> Flags { get; set; }
}
还有我的控制器:
Dictionary<string, string> flags = new Dictionary<string, string>();
flags.Add("kind", "Edit");
flags.Add("Command", "Save");
ViewModel model = new ViewModel(){ Flags = flags };
return View(model);
在视图中:
@foreach(var item in Model.ViewPart.Flags) {
<input type="hidden" id="ViewPart_Flags_@(item.Key)" value="@item.Value" name="ViewPart.Flags[@(item.Key)]" />
}
我也试试这个:
@foreach(var item in Model.ViewPart.Flags) {
@Html.HiddenFor(modelItem => item)
}
更新 发布操作:
[HttpPost]
public ActionResult MyPostAction(ViewModel model){
//model.ViewPart.Flags is null
}
但在 Post 操作中,Flags 始终为空,为什么?我的错在哪里?有没有更好的方法将变量从视图传递到操作?
【问题讨论】:
-
Post 动作是什么样子的,它接收到像
public ActionResult Something(ViewPart viewPart)这样的 Flags 模型吗? -
@Garrett Fogerlie 我更新问题
标签: asp.net-mvc asp.net-mvc-3 dictionary hidden-field