C# 从视图中检索整个模型

C# 从视图中检索整个模型,c#,html,asp.net-mvc,razor,C#,Html,Asp.net Mvc,Razor,我有一个ASP.NETMVC项目,我正在使用一个模型类。我有大约10个变量,我需要从我的控制器到视图,然后再回到控制器。目前,我一直在将它们存储在模型中,将变量读入隐藏的输入字段,然后使用NameValueCollection如下所示: Html: 注意:值s和名称s已编辑以简化操作 有更好的方法吗?理想情况下,我希望将我的整个模型传递回控制器,但我一直在寻找解决方案,但没有成功 无需手动编写html输入代码或直接从Request.Form对象解析数据。MVC框架在内部为您完成所有这些 pu

我有一个ASP.NETMVC项目,我正在使用一个模型类。我有大约10个变量,我需要从我的控制器到视图,然后再回到控制器。目前,我一直在将它们存储在模型中,将变量读入隐藏的输入字段,然后使用
NameValueCollection
如下所示:


Html:

注意:
s和
名称
s已编辑以简化操作



有更好的方法吗?理想情况下,我希望将我的整个模型传递回控制器,但我一直在寻找解决方案,但没有成功

无需手动编写html输入代码或直接从Request.Form对象解析数据。MVC框架在内部为您完成所有这些

public class MyModel 
{
    public string Variable1 {get;set;}
    public string Variable2 {get;set;}
    //....

}
视图:

这些以结尾的方法的特殊之处在于,当您指定模型的属性时,它们将使用正确的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
}

您还可以发送自定义对象的列表,并在发回时将其持久化,但这有点复杂,超出了此答案的范围。

无需手动编写html输入代码或直接从Request.Form对象解析数据。MVC框架在内部为您完成所有这些

public class MyModel 
{
    public string Variable1 {get;set;}
    public string Variable2 {get;set;}
    //....

}
视图:

这些以结尾的方法的特殊之处在于,当您指定模型的属性时,它们将使用正确的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
}

您也可以发送自定义对象列表,并在发回时将其持久化,但这有点复杂,超出了此答案的范围。

是否始终有一个固定数量的字段?是的,将有一个固定数量的字段。是否始终有一个固定数量的字段?是的,将有一组字段。这也适用于类吗?例如,如果我的模型的一个属性是一个带有三个变量的自定义类,我是否能够使用
@Html.HiddenFor
?@WookieCoder是的,使用
@Html…For
的美妙之处在于,它将计算出该输入的id和name属性值,以便MVC模型绑定器在您发回模型时在您的操作中重新填充模型。这对类也适用吗?例如,如果我的模型的一个属性是一个带有三个变量的自定义类,我是否能够使用
@Html.HiddenFor
?@WookieCoder是的,使用@Html…For的美妙之处在于,它将计算出该输入的id和name属性值,以便MVC模型绑定器在您发回模型时在您的操作中重新填充模型。