如何在Asp. js中使用Razor模板引擎创建用于编辑的数据网格.净MVC

本文关键字:编辑 用于 创建 数据 数据网 MVC 网格 引擎 js Asp Razor | 更新日期: 2023-09-27 18:09:20

我早些时候发布了一个问题,这个问题被标记为重复,因为它有点类似于现有的回答问题。在我最初的问题中,我解释了我遇到的问题。

现在,我正试图用我带走的问题,有答案"即post一个HTML表到ADO。. NET DataTable",并尝试实现它。我所做的和答案之间的主要区别在于,我在一个表示类中封装了多个viewmodel,因为视图有多个表单。此外,我使用了use DropDownListFor,它需要一个SelectItem列表,该列表依赖于我的presenter类中的另一个属性。

这是我所做的

我为我的网格行创建了一个模板视图,如下所示

@model Proj.ViewModels.UserProfileAccessUserToClientsViewModel
<tr>
    <td>
        @Html.HiddenFor(m => m.ClientId)
    </td>
    <td>
        Menu Goes here -- Still to do since I don't know how to pass SelectItem to this view
    </td>
    <td>
        @Html.TextBoxFor(m => m.JoinedAt, new { @class = "form-control date-picker small-input" })
    </td>
    <td>
        @Html.RadioButtonFor(m => m.IsActive, true) Allowed
    </td>
    <td>
        @Html.RadioButtonFor(m => m.IsActive, true) Not Allowed
    </td>
</tr>

然后在其中一个我想要显示表格的表单中,输入

@model Proj.Presenters.UserProfilePresenter
<div class="panel panel-default">
    <div class="panel-heading">User To Client Association</div>
    <table class="table table-condensed table-valign-text" id="UserToClientRelationTable">
        <thead>
            <tr>
                <th>Client</th>
                <th>Default Team</th>
                <th class="text-center">Join At</th>
                <th colspan="2" class="text-center">Status</th>
            </tr>
        </thead>
        <tbody>
            @Html.EditorFor(m => m.Access.UserToClients)
        </tbody>
        <tfoot>
            <tr>
                <td colspan="5" class="text-center">
                    <ul class="pagination pagination-sm pager" id="UserToClientRelationTablePager"></ul>
                </td>
            </tr>
        </tfoot>
    </table>
</div>

现在,当我运行我的代码时,我的表没有行。也许,我没有在我的主视图中包括我的模板。但我也不确定我该怎么做。

我如何正确地使用我的编辑模板来显示行?

我怎么能传递一个变量到我的编辑模板需要生成SelectItem列表下拉列表?

如何在Asp. js中使用Razor模板引擎创建用于编辑的数据网格.净MVC

我没有看到任何类型的循环,但我认为m.Access.UserToClients是一个列表,您正在传递给您的模板,然而,您的模板期望单个项目。

更新你的模板来接受一个列表:

@model IList<Proj.ViewModels.UserProfileAccessUserToClientsViewModel>
@foreach (var m in Model)
{
  <tr>
  ...
  </tr>
}