加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 从部分视图问题返回模型

发布时间:2020-12-16 07:00:40 所属栏目:asp.Net 来源:网络整理
导读:我创建了一个局部视图(即使是编辑器模板),我将一个子模型传递给视图,但是,当我单击“提交”时,我总是从局部视图中获得“null”.除了子模型1之外,我可以获得Main模型的属性值. 主要模型 public class PetModel{ public string name {get; set;} public long S
我创建了一个局部视图(即使是编辑器模板),我将一个子模型传递给视图,但是,当我单击“提交”时,我总是从局部视图中获得“null”.除了子模型1之外,我可以获得Main模型的属性值.

主要模型

public class PetModel
{
  public string name {get; set;}
  public long SpeciesID {get; set;}
  public long BreedID {get; set;}
  public Calendar DOB {get; set;} 
}

子模型

public class Calendar
{
    public string Year{get; set;}
    public string Month{get; set;}
    public string Day{get; set;}
}

主视图

@model Application.Models.PetModel
    @using (Html.BeginForm("CatchPetContent","Quote",Model))
   {
     @Html.TextBoxFor(x => x.Name)
     @Html.DropDownListFor(x=>x.SpeciesID,new List<SelectListItem>(),"select")
     @Html.DropDownListFor(x=>x.BreedID,"select")
     @Html.EditorFor(Model => x.DOB)
     <input type="submit" value="submit" />
   }

编辑模板

@model Application.Models.Calendar
@Html.DropDownListFor(Model => Model.Day,new List<SelectListItem>())
@Html.DropDownListFor(Model => Model.Month,new List<SelectListItem>())
@Html.DropDownListFor(Model => Model.Year,new List<SelectListItem>())

“CatchPetContent”动作

[HttpPost]
public ActionResult CatchPetContent(PetModel Model)
{


        PetModel pet = new PetModel();
        pet.Name = Model.Name;
        pet.SpeciesID = Model.SpeciesID;
        pet.BreedID = Model.BreedID;
        pet.DOB = Model.DOB;// always null

        RouteValueDictionary redirectTargetDictionary = new RouteValueDictionary();
        redirectTargetDictionary.Add("Controller","Home");
        redirectTargetDictionary.Add("Action","Index");

        return new RedirectToRouteResult(new  RouteValueDictionary(redirectTargetDictionary));

}

当我调试它时,“Model.DOB”始终为null

解决方法

您应该将子属性添加为操作的额外参数:

[HttpPost]
public ActionResult CatchPetContent(PetModel Model,Calendar Bob)
{      
    ** snip **
}

默认的ModelBinder不嵌套对象.但是,如果将其作为第二个参数包含在内,它会找到值.

如果你想嵌套它们,你必须创建自己的模型绑定器.

以下问题也存在类似问题:List count empty when passing from view to model in ASP.Net MVC

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读