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){…
)。如果发布模型和视图,我可以给出更好的答案来解释这一点