在MVC中编辑列表集合属性的方法

本文关键字:属性 方法 集合 列表 MVC 编辑 | 更新日期: 2023-09-27 18:08:55

    public class VerifyLicensorModel
    {
        public int TempId { get; set; } 
        public string Licensor { get; set; } 
        public string Address { get; set; }
        public int LicensorId { get; set; }
        public int ActionId { get; set; }   
        public int ReferenceId { get; set; }
    }

这是我的模型,我得到这个列表作为excel导入的结果,我要求用户验证数据

因此,对于每个许可方用户应该选择一个操作[actionId],并且也有一个基于操作用户选择[ReferenceId]的引用所以选择ActionId和ReferenceId我使用一个模态弹出,允许用户选择动作和ReferenceId[决定这2个参数的过程是复杂的,包括很多条件检查和并行选择的输入,首先判断liceonsor是新的还是现有的。如果决策已存在,则查找已存在的id、相关地址。然后决定使用新地址或替换现有地址。如果决定替换现有的,选择要替换的

这就是为什么计划将其逻辑保持为一个单独的逻辑,并返回结果只有2个id actionid和referenceID]

在提交时我如何设置这两个属性的值我的观点是这样的

        @model  IList<ApplicationLab.Models.VerifyLicensorModel>
        @using (Html.BeginForm())
        {
            @Html.ValidationSummary(true)
            <table class="table">
                <tr>
                    <th>
                      Licensor
                    </th>
                    <th>
                     Address
                    </th>
                    <th>
                        Action
                    </th>
                    <th>
                        Verify
                    </th>
                </tr>
              @for (int i = 0; i < Model.Count(); i++) 
              {
                    <tr>
                        <td>
                            @Html.HiddenFor(modelItem => Model[i].TempId)
                            @Html.HiddenFor(modelItem => Model[i].LicensorId)
                            @Html.DisplayFor(modelItem => Model[i].Licensor)                                
                        </td>
                        <td>
                            @Html.TextAreaFor(modelItem => Model[i].Address)
                        </td>
                        <td>                                  
                            @Html.HiddenFor(modelItem => Model[i].ActionId)
                            @Html.HiddenFor(modelItem => Model[i].ReferenceId)                             
                        </td>
                        <td>
                            <a >Verify</a> // onclick plannig to show popup
                        </td>
                    </tr>
                }
            </table>
            <div class="form-group">
                <div class="col-md-10" style="text-align:center;">
                    <input type="submit" value="Submit" class="btn btn-primary" />
                    @Html.ActionLink("Cancel", "LicenseImport", "Import", new { @id = @ViewBag.EditionId }, new { @class = "btn btn-link" })
                </div>
            </div>
        }

那么我的方法是正确的吗?如果是这样,我如何设置选定的行属性?或者有没有更好的方法或例子来建议实现相同的?

在MVC中编辑列表集合属性的方法

通常,您的视图模型应该是页面和页面上元素的表示。如果要在模态上使用,可以使用分部视图模板。

你需要创建List的新属性来表示actionid和referenceid可用的选项,并将其作为参数传递给@Html辅助函数。视图中的DropDownListFor

public class VerifyLicensorModel
{
    public int TempId { get; set; } 
    public string Licensor { get; set; } 
    public string Address { get; set; }
    public int LicensorId { get; set; }
    public int ActionId { get; set; }
    public List<SelectListItem> ActionOptions { get; set; }   
    public int ReferenceId { get; set; }
    public List<SelectListItem> ReferenceOptions { get; set; }   
}

On the View:

@Html.DropDownListFor(m => m.ActionId, Model.ActionOptions);
@Html.DropDownListFor(m => m.ReferenceId, Model.ReferenceOptions);