四次元口袋 2019-07-25 11:01 采纳率: 0%
浏览 258

将HTML表发布到ADO.NET DataTable

有一个 HTML 表如下:

<table id="tblCurrentYear">
    <tr>
        <td>Leave Type</td>
        <td>Leave Taken</td>
        <td>Leave Balance</td>
        <td>Leave Total</td>
    </tr>
    @foreach (var item in Model.LeaveDetailsList)
    {
        <tr>
            <td>@Html.TextBoxFor(m => item.LeaveType, new { width = "100" })</td>
            <td>@Html.TextBoxFor(m => item.LeaveTaken, new { width = "100" })</td>
            <td>@Html.TextBoxFor(m => item.LeaveBalance, new { width = "100" })</td>
            <td>@Html.TextBoxFor(m => item.LeaveTotal, new { width = "100" })</td>
        </tr>
    }</table>

我想遍历所有的 html 表行,并在 ADO.NET DataTable 中插入值。
简单地说,将 HTML Table 转换为 ADO.NET DataTable。
如何从 HTML 表中提取值并插入到 ADO.NET DataTable中?
该view基于以下模型

public class LeaveBalanceViewModel{
    public LeaveBalanceViewModel()
    {
        this.EmployeeDetail = new EmployeeDetails();
        this.LeaveBalanceDetail = new LeaveBalanceDetails();
        this.LeaveDetailsList = new List<LeaveBalanceDetails>();
    }
    public EmployeeDetails EmployeeDetail { get; set; }
    public LeaveBalanceDetails LeaveBalanceDetail { get; set; }
    public List<LeaveBalanceDetails> LeaveDetailsList { get; set; }}
  • 写回答

2条回答 默认 最新

  • weixin_38166374 2019-07-25 11:11
    关注

    为了绑定到发回来的模型,表单控件的 name 属性必须匹配模型属性。使用 foreach 循环不会生成正确的 name 属性。如果你检查 html,会看到这个

    但是为了绑定到你的模型,control 要

    反正就是这样子之类的。考虑这个问题的最简单方法是考虑如何在 c # 代码中访问 LeaveType 属性的值

    var model = new LeaveBalanceViewModel();// add some LeaveBalanceDetails instances to the LeaveDetailsList property, then access a valuevar leaveType = model.LeaveDetailsList[0].LeaveType;
    

    因为您的 POST 将有一个参数名(比如model) ,所以只需删除前缀(model) ,这就是控件的 name 属性必须的样子。 为此,必须使用forloop (集合必应用IList)

    for(int i = 0; i < Model.LeaveDetailsList.Count; i++){
        @Html.TextBoxFor(m => m.LeaveDetailsList[i].LeaveType)
        ....}
    

    或使用自定义 EditorTemplate (集合只需实现 IEnumerable)
    在/Views/Shared/EditorTemplates/LeaveBalanceDetails.cshtml

    @model yourAssembly.LeaveBalanceDetails<tr>
        <td>@Html.TextBoxFor(m => m.LeaveType)</td>
        ....</tr>
    

    然后在主视图中(不是在循环中)

    <table>
        .... // add headings (preferably in a thead element
        <tbody>
            @Html.EditorFor(m => m.LeaveDetailsList)
        </tbody></table>
    

    最后,在控制器里

    public ActionResult Edit(LeaveBalanceViewModel model){
        // iterate over model.LeaveDetailsList and save the items}
    
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog