Asp.net mvc 4 MVC:如何在[HttpPost]之后在模型中保留值

Asp.net mvc 4 MVC:如何在[HttpPost]之后在模型中保留值,asp.net-mvc-4,http-post,Asp.net Mvc 4,Http Post,控制器的第一行正在初始化我的模型: ViewModel myModel = new ViewModel; public ActionResult MyPage(string id) { var concatString = id.Split(','); myModel.newString1 = concatString [0]; myModel.newString2 = concatString [1]; myModel.newString3 = concatString [2

控制器的第一行正在初始化我的模型:

ViewModel myModel = new ViewModel;

public ActionResult MyPage(string id)
{
  var concatString = id.Split(',');
  myModel.newString1 = concatString [0];
  myModel.newString2 = concatString [1];
  myModel.newString3 = concatString [2];
  return View(meterModel);
}

[HttpPost]
public ActionResult MyPage()
{
  ValidateStuff(Request);
  return View(myModel)
}

private void ValidateSuff(HttpRequestBase request)
{
  //Below is basic summery of regexmatching of form fields
  if (request.form[Stuff1] != "")
  {
    myModel.string4 = request.form[Stuff1];
  }
  else
  {
    ModelState.AddModelError("Stuff1", "Required Field.");
  }
}
我将50%的信息从另一个控制器传递到该模型(这很好),并且需要从我生成的表单中获得另外50%的信息。然而,在HttpPost期间,模型重新初始化,我丢失了前50%的对象值


我做错了吗?

很难理解您为什么这样做(为什么不发回您的模型?)。您的post方法只设置了
newString4
newString5
newString6
的值(它从不设置前3个属性的值,因此它们当然为空-您的字段
myModel
随每个请求而初始化)。@Stephen Muecke-表单是否在视图中写入模型?然后把模型传回去,我想我遗漏了我正在接受表单,并验证控制器中的数据。。我将更新主主题是的,但是为什么您的模型不只是包含
Stuff1
Stuff2
等的属性,让框架为您处理绑定-
public ActionResult MyPage(ViewModel模型)
(并摆脱可怕的
请求。表单[Stuff1]
code由于这是我的第一个mvc项目,我的印象是,您应该只对模型中经过验证或“良好”的值进行修改。通过使用mvc的功能,包括将验证属性应用于您的属性(例如,
[必需]
),可以更好地完成此处显示的所有内容(并且代码更少),使用强类型html帮助程序绑定属性,使用客户端验证和发回模型,并检查
if(ModelState.IsValid){…
)。如果发布模型和视图,我可以给出更好的答案来解释这一点