mvc3如何使用HttPpost绑定视图

时间:2014-02-19 19:46:16

标签: database asp.net-mvc-3 model-binding

这是我的第一篇文章,我刚刚用mvc3弄湿了脚。我在一个视图中有一个包含3个模型的表单,我正在尝试提交表单但我提交的3个字段一旦提交就归零在数据库中;这是表格。如何创建模型:主要是国家,这是我提交的问题,因为它出现了null

  public class countries
{
    public string china { get; set; }
    public string japan { get; set; }
    public string thailand { get; set; }
   }
  // I know put multiple models inside allmyplanets
    public class allmyplanets
     {
          public IEnumerable<politcal> rankworld { get; set; }
    public countries asia { get; set; }
     public president names { get; set; }
        }

这是视图的外观,表单仅适用于我试图提交的国家/地区

John.Models.allmyplanets


   @using (Ajax.BeginForm("planet", "earth", null, new AjaxOptions
{
UpdateTargetId = "submitted",
InsertionMode = InsertionMode.Replace,
HttpMethod = "POST"
 }))
{
 @Html.TextAreaFor(x => x.asia.china)
 @Html.TextAreaFor(x => x.asia.japan)
  @Html.TextAreaFor(x => x.asia.thailand)

        <br />
        <input type="submit" name="myform" id="submitform" value="Submit Form" />
}

现在提交3个字段的简单表单我尝试捕获值,它确实在数据库中形成一个新行,但是所有3个字段都是null,这就是我试图捕获它...

 public PartialViewResult planet(countries submit,string asia_china, string asia_japan, string asia_thailand)
    {
        submit.china = asia_china;
        submit.japan = asia_japan;
        submit.thailand = asia_thailand;
        db.countries.Add(submit);
        db.SaveChanges();
  }

导致一切都为null的代码有什么问题?因为razor命名约定将所有具有多个倍数的ID转换为破折号以分隔,例如id =“asia_china”,所以我把它放在破折号下。怎么解决这个问题?

1 个答案:

答案 0 :(得分:2)

[HttpPost]
public PartialViewResult planet(allmyplanets allplanet)
{
    countries country=new countries();
    allplanet.asia=country;
    //save the data         
}