Asp.net mvc 如何通过表单集合发送联接表数据

Asp.net mvc 如何通过表单集合发送联接表数据,asp.net-mvc,Asp.net Mvc,控制器 public class Employee { [Key] public int ID { get; set; } public string Name { get; set; } public int DesignationID { get; set; } public virtual Designation Designation { get; set; } } 视图:- public void AccountUpdate(Employee

控制器

public class Employee
{
    [Key]
    public int ID { get; set; }
    public string Name { get; set; }
    public int DesignationID { get; set; }

    public virtual Designation Designation { get; set; }
}
视图:-

public void AccountUpdate(Employee employee) {}
彼得 经理 我正在将表单集合对象发送到我的AccountUpdate操作方法,我得到的是员工姓名,但不是其指定姓名。 您能告诉我如何在employee对象中访问指定名称的Action方法吗


谢谢,ASP.NET MVC模型绑定要求模型上的属性与网页上的字段完全匹配。因此,您需要更改模型属性名称以匹配字段名称:

<label name= "Name"> Peter </label>
<label name= "DesignationName"> Manager </label>
或与模型特性名称匹配的字段名称:

public class Employee
{
    [Key]
    public int ID { get; set; }
    public string Name { get; set; }
    public int DesignationID { get; set; }

    public virtual Designation DesignationName { get; set; }
}
彼得 经理 或者,如果
名称
类型是无法从
字符串直接转换的复杂对象,则需要实现自定义模型绑定器和/或类型转换器()。

要列出作为另一类对象集合的模型特性,请尝试以下操作:

<label name= "Name"> Peter </label>
<label name= "Designation"> Manager </label>
公共类人物{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共列表车辆{get;set;}
}
公车{
公共int ID{get;set;}
公共字符串名称{get;set;}
}
在视图中,必须将person对象中的汽车对象列为以属性名称和索引命名的输入

public class Person {
   public int ID { get; set;}
   public string Name { get; set;}
   public List<Car> Cars { get; set;}
}

public class Car {
   public int ID { get; set; }
   public string name { get; set;}
}
@模特儿
@使用(Html.BeginForm())
{
对于(int i=0;im.Cars[i].ID)
....
}
}

使用此功能,您的模型会自动使用表单发送的输入填充属性车

是否按照您的建议向Employee类添加另一个属性是一种好方法?@FahadMeraj您不需要添加另一个属性,只需重命名现有属性即可。现在我获得了指定的对象,但无法访问或设置其值“管理者”您的视图仅显示
元素。显示如何为
员工的属性生成表单控件。以及为什么要添加
名称
属性(它不是
标签
的有效属性)我是新来的,所以我不知道很多事情。我回答我的问题只是为了对别人有所帮助,但作为回报,我投了反对票:)你可能投了反对票,因为这不是做这件事的方式,而且代码很糟糕。它需要是(int=I;I
但是,拥有一个只包含收藏的隐藏输入的视图是毫无意义的。代码可能是错误的,但它给了你解决我在帖子中提出的问题的提示。我发现你的评论有点刺耳。很抱歉。下次我将投下它应得的反对票,而不是指出你的错误并继续前进。Stephen Muecke我很佩服你在这里帮助海报的努力,你以前曾经帮助过我。下次我会小心地发布这样的代码
@model Person
@using (Html.BeginForm())
{
    for(int i = 0; i < Model.Cars.Count; i++)
    {
        @Html.HiddenFor(m => m.Cars[i].ID)
        ....
    }
    <input type="submit" value="Grant Access" />
}