C#从动态创建的HTML表单接收数据
我正在创建一个ASP.Net应用程序,该应用程序显示SQLite数据库中的记录,并合并从传入的记录生成的过滤器选项,因为我不知道列中将包含什么类型的数据。我已经准备好了过滤器,并将创建HTML表单,该表单将显示字段值以及具有该值的记录的数量。但是,我不确定如何获取该数据,因为据我所知,控制器中的接收方法希望每个变量都有一个匹配的参数(HTML form:value=“bob”,控制器中的接收方法使用一个参数,例如字符串bob)。 我生成HTML表单的代码是:C#从动态创建的HTML表单接收数据,c#,asp.net,forms,C#,Asp.net,Forms,我正在创建一个ASP.Net应用程序,该应用程序显示SQLite数据库中的记录,并合并从传入的记录生成的过滤器选项,因为我不知道列中将包含什么类型的数据。我已经准备好了过滤器,并将创建HTML表单,该表单将显示字段值以及具有该值的记录的数量。但是,我不确定如何获取该数据,因为据我所知,控制器中的接收方法希望每个变量都有一个匹配的参数(HTML form:value=“bob”,控制器中的接收方法使用一个参数,例如字符串bob)。 我生成HTML表单的代码是: <div> <
<div>
<text>Employment:</text> <br />
@foreach (var employment in Model.Employment)
{
<input type="checkbox" value="{@employment.Key}"/>@employment.Key <text>(@employment.Value)</text> <br />
}
<hr />
</div>
这对于实现来说可能不是必需的,但对于我构建这个应用程序来说是有意义的。这是一个类,包含我用于构建筛选器选项的所有员工和词典的列表:
public class TeamMembersModel
{
public Dictionary<string, int> Employment { get; set; }
public Dictionary<string, int> Position { get; set; }
public Dictionary<string, int> Shift { get; set; }
public Dictionary<string, int> Department { get; set; }
public Dictionary<string, int> Manager { get; set; }
public List<MemberModel> Employees { get; set; }
}
公共类团队成员模型
{
公共字典{get;set;}
公共字典位置{get;set;}
公共字典移位{get;set;}
公共词典部门{get;set;}
公共字典管理器{get;set;}
公共列表雇员{get;set;}
}
这段代码是我如何构建用于筛选的表单的浓缩版本:
<form asp-action="" asp-controller="TeamMembers" method="get">
<!-- Department -->
<div>
<text>Department:</text> <br />
@foreach (var departments in Model.Department)
{
<input type="checkbox" value="@departments.Key" />@departments.Key <text>(@departments.Value)</text> <br />
}
<hr />
</div>
<!-- This is repeated for each dictionary in the TeamMembersModel class -->
<button type="submit" value="Filter">Filter</button>
</form>
部门:
@foreach(Model.Department中的var部门)
{
@departments.Key(@departments.Value)
}
滤器
您基本上希望将类或列表绑定到视图。。。。这样,您的控制器可以在您提交时解析它。当你说“不知道列中会有什么样的数据”时。。。那很好。。。只要你知道这些列是什么。这些将是您绑定的类中的属性。发布更多代码会更好。@pcalkins感谢您的回复。我添加了存储员工信息的类、存储要显示的所有员工的类、用于显示筛选选项的不同词典,以及用于构建表单的HTML。我建议在控制器中创建复选框:看起来您根本不需要词典。。。绑定/填充控制器中的列表,视图将拥有它。过滤器逻辑将在post上完成。。。要查看的返回列表。抱歉,我发现您的描述有点不清楚。正在询问如何从HTML数据中解析数据?如果是这样,最简单的方法就是使用HTML解析库,例如。这样的库将把那些
标记转换成可以轻松遍历的节点。
public class TeamMembersModel
{
public Dictionary<string, int> Employment { get; set; }
public Dictionary<string, int> Position { get; set; }
public Dictionary<string, int> Shift { get; set; }
public Dictionary<string, int> Department { get; set; }
public Dictionary<string, int> Manager { get; set; }
public List<MemberModel> Employees { get; set; }
}
<form asp-action="" asp-controller="TeamMembers" method="get">
<!-- Department -->
<div>
<text>Department:</text> <br />
@foreach (var departments in Model.Department)
{
<input type="checkbox" value="@departments.Key" />@departments.Key <text>(@departments.Value)</text> <br />
}
<hr />
</div>
<!-- This is repeated for each dictionary in the TeamMembersModel class -->
<button type="submit" value="Filter">Filter</button>
</form>