如何在 ASP.NET MVC4 表中执行简单的多项选择

2023-12-24

这是我的观点:

@model Affiliate


<div class="box paint color_16">
<div class="title">
    <h4><i class="icon-tasks"></i><span>@Model.CompanyName's Commissions</span> </h4>
</div>
<div class="content top ">
    <div class="subtitle">
        @Html.ActionLink("Void", "DeleteInvoice", new { commList = "??", affId = Model.Id }, new { @class = "btn" })
        @Html.ActionLink("Create Invoice", "CreateInvoice", new { commList = "??", affId = Model.Id }, new { @class = "btn" })
        @Html.ActionLink("Pay", "PayInvoice", new { commList = "??", affId = Model.Id }, new { @class = "btn" })
    </div>

    <table class="table table-striped table-hover">
        <tr>
            <h3>Commissions</h3>
        </tr>
        <tr>
            <td></td>
            <td>Amount</td>
            <td>Status</td>
            <td>Action</td>
        </tr>
        @foreach (var item in Model.Commissions)
        {
            <tr>
                @if (item.Status == ViewBag.PaymentStatus || ViewBag.PaymentStatus == "All")
                {
                    <td>@Html.CheckBox("commId", new { value = item.Id })</td>
                    <td>@Html.DisplayFor(x => item.PayoutAmount)</td>
                    <td>@Html.DisplayFor(x => item.Status)</td>
                }
            </tr>
        }
    </table>
</div>

我想要做的是,当我点击顶部的操作链接时,从表中获取所有已检查的项目,并将该 id 列表传递给控制器​​逻辑。我假设视图模型可能是解决方案,如下所示:

 public Affiliate affilite { get; set; }
 public List<int> selectedItems { get; set; }
 etc.

但是如何将所选项目放入 VM selectedItems 容器中?


根据您的评论,您似乎并不是在寻找最“正确”的答案,而只是一个快速而肮脏的“我会怎么做”答案。如果您只想传递列表,您可以像这样设置控制器操作:

public ActionResult MyAction(int[] id)
{
    ...
}

或者,您似乎表明它是强类型化到具有包含列表的属性的视图模型(我会缩短属性的名称,您很快就会明白为什么)。

在 javascript 中,最简单的方法是使用 jQuery 在超链接上绑定单击事件,该事件获取已检查的项目列表并将其附加到查询字符串。

$("#myLink").click(function()
{
    var url = "site.com/action?";
    var ids = $(".table").find("input:checked");

    ids.each(function()
    {
        url += "id=" + $(this).val() + "&"
    });

    window.location = url;
});

基本上,您希望创建一个长查询字符串,其中操作参数的名称一遍又一遍地重复,它标识一个数组。它看起来像这样(id 代表 MyAction 中的 int[] id):

id=15&id=20&id=25&id=30&....

然后,一旦构建了查询字符串,就将用户重定向到该 url。然后,MVC 应该能够将其绑定到数组,这样就一切就绪了。

无论如何,这基本上就是这个想法;我写的语法和 javascript 可能有很大的偏差,所以不要复制我的代码并期望它按原样工作 - 这是我凭空写下来的。如果您的操作绑定到视图模型,那么您需要将查询字符串中的参数设置为模型属性的名称:

selectedids=1&selectedids=2&selectedids=3...

或者,如果数组是对象的属性,而对象的属性是模型的属性......

model.selectedids=1&model.selectedids=2&model.selectedids=3...

您只需要尝试一下即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ASP.NET MVC4 表中执行简单的多项选择 的相关文章

  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • Javascript split 不是一个函数

    嘿朋友们 我正在使用 javascript sdk 通过 jQuery facebook 多朋友选择器在用户朋友墙上发布信息 但是我收到此错误friendId split 不是函数 这是我的代码 function recommendToFr
  • window.location 和 location.href 之间的区别

    我对之间的区别感到困惑window location and location href 两者似乎都以相同的方式行事 有什么不同 window location是一个对象 它保存有关当前文档位置的所有信息 主机 href 端口 协议等 lo
  • 重载<<的返回值

    include
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 从数据库检查数据的异步解决方案各种循环子句

    我想要做的是异步检查数据库并从中获取结果 在我的应用程序中我试图实现Asynchronously将此步骤解决为 从数据库中检查手机号码JsonArray循环子句的种类 Create JsonArray从结果 打印创建的数组 我学到了足够多的
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 如何使用 crypto-js 解密 AES ECB

    我正在尝试将加密数据从 flash 客户端 发送到服务器端的 javascript 在 asp 中作为 jscript 运行 有几个 javascript Aes 库 但它们实际上没有文档记录 我正在尝试使用 crypto js 但无法让代
  • 如何隐藏/禁用 Highcharts.js 中的图例框?

    我想问是否可以使用 HighCharts js 库隐藏图表中的所有图例框 var chart object chart renderTo render to type graph type colors graph colors title
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 良好的 WiX 编辑器 [重复]

    这个问题在这里已经有答案了 我目前正在开发一个使用 WiX 创建 MSI 的项目 我过去在 Sourceforge 上使用 WiXEdit 来管理包含在 WiX 项目中的文件 因为它比直接操作 XML 稍微容易一些 但它仍然有点笨重 有谁知
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • JavaScript 相对路径

    在第一个 html 文件中 我使用了一个变量类别链接 var categoryLinks Career prospects http localhost Landa DirectManagers 511 HelenaChechik Dim0
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 如何确定所有角度2分量都已渲染?

    当所有 Angular2 组件完成渲染时 是否会触发一个角度事件 For jQuery 我们可以用 function 然而 对于 Angular2 当domready事件被触发 html 只包含角度组件标签 每个组件完成渲染后 domrea
  • 如何在执行新操作时取消先前操作的执行?

    我有一个动作创建器 它会进行昂贵的计算 并在每次用户输入内容时调度一个动作 基本上是实时更新 但是 如果用户输入多个内容 我不希望之前昂贵的计算完全运行 理想情况下 我希望能够取消执行先前的计算并只执行当前的计算 没有内置功能可以取消Pro

随机推荐