我有一个ASP.NET MVC项目,我正在使用模型类。我有大约10个变量需要从控制器到视图然后再返回控制器。目前,我一直将它们存储在模型中,将变量读入隐藏的输入字段,然后使用NameValueCollection
这样:
HTML:
<input type="hidden" id="field1" name="field1" value="@Model.variable1" />
<input type="hidden" id="field2" name="field2" value="@Model.variable2" />
<input type="hidden" id="field3" name="field3" value="@Model.variable3" />
<input type="hidden" id="field4" name="field4" value="@Model.variable4" />
<input type="hidden" id="field5" name="field5" value="@Model.variable5" />
<input type="hidden" id="field6" name="field6" value="@Model.variable6" />
C#
System.Collections.Specialized.NameValueCollection nvc = Request.Form;
model.variable1= int.Parse(nvc["field1"]);
//read the rest of the data into the model
注意:为简单起见,values
和name
已经过编辑
有更好的方法吗?理想情况下,我想将整个模型传递给我的控制器,但我找到了一个没有成功的解决方案。
答案 0 :(得分:4)
无需手动编写html输入代码或直接从Request.Form对象解析数据。 MVC框架为您完成所有内容。
public class MyModel
{
public string Variable1 {get;set;}
public string Variable2 {get;set;}
//....
}
查看:
以For
结尾的这些方法的特殊之处在于,当您指定模型的属性时,他们将使用构建您具有正确的id和name属性的html输入。
@model MyModel
@Html.HiddenFor(x=> x.Variable1)
@Html.HiddenFor(x=> x.Variable2)
//...
控制器操作:
[HttpGet]
public ActionResult SomeAction()
{
var model = new MyModel();
model.Variabl1 = "hi";
return View(model);
}
[HttpPost]
public ActionResult SomeAction(MyModel model)
{
model.Variable1
}
您还可以发送自定义对象列表并在发回时保留它们,但这样做有点复杂,并且超出了此答案的范围。