【问题标题】:Disable an @Html.ActionLink which is a btn btn-default in Razor views while enabling another @HtmlActionLink on a boolean compare禁用 @Html.ActionLink 这是 Razor 视图中的 btn btn-default,同时在布尔比较上启用另一个 @HtmlActionLink
【发布时间】:2017-01-20 20:46:38
【问题描述】:

我在 Razor 视图/Bootstrap 按钮中有以下 @HtmlAction 链接,该链接检查用户角色和布尔标志以查看是否接收到路由的当前记录以进行处理。解决方案是使用 ASP.NET MVC4 和 C#。

<div class="panel-heading">
    <span>
        Production Submission Summary
        <span class="pull-right" style="margin-top:-8px">
            @if (User.IsInRole("Admin") && !ProdHeader.Received)
        {
                 @Html.ActionLink("Receive Shipment", "ReceiveSubmission", new { ProdHeaderId = Model.ProdHeader.Id }, new { @class = "btn btn-default" })
            }
        </span>
    </span>
</div>

我想添加另一个比较来检查名为 PaymentReceived 的布尔字段的状态,如果 Paymentreceived 为真,我想禁用 PaymentReceived 操作链接按钮并启用上面的 Shipment received 操作链接。所以 Shipmentreceived 按钮应该被禁用,直到 Paymentreceived 按钮被点击,然后 PaymentReceived 应该被禁用并且 shippingreceived 按钮应该被激活。我已经像上面一样设置了 Paymentreceived 的 Action 链接,但不确定在哪里检查布尔比较。它应该与 ReceiveSubmission 操作链接在同一个 div 中还是单独在同一个 div 中,应该首先进行哪个比较? 非常感谢

这里是完整的代码段。我可以只在 div 中使用一个 id 并制作一个需要隐藏的开关吗?

@if (User.IsInRole("Admin") || User.IsInRole("Prod") && (!Model.ProdTypeHeader.ReceivedPayment))
            {

                @Html.ActionLink("Receive Payment", "ReceivePayment", new { prodTypeHeaderId = Model.ProdTypingHeader.Id}, new { @class = "btn btn-default" })
                @Html.ActionLink("Receive Shipment", "ReceivePayment", new { prodTypeHeaderId = Model.ProdTypingHeader.Id}, new { @class = "btn btn-default", disabled = "disabled" }) *@
            }



 @if (User.IsInRole("Admin") || User.IsInRole("Finance") && (!ModelProdTypeHeader.Received))
            {
                @Html.ActionLink("Receive Shipment", "ReceiveSubmission", new { prodTypeHeaderId = Model.ProdTypeHeader.Id}, new { @class = "btn btn-default" })
                @Html.ActionLink("Receive Payment", "ReceivePayment", new { prodTypeHeaderId = Model.ProdTypeHeader.Id}, new { @class = "btn btn-default" , disabled = "disabled"})
            }

【问题讨论】:

  • 这可能对你有帮助 - stackoverflow.com/questions/9846845/…
  • 我不久前看到了。我遇到的问题是我这样做的方式,它显示每个按钮两次。一种用于禁用状态,一种用于启用状态。所以我只是检查布尔条件并运行更改我的状态的操作结果,然后禁用将我发送到操作结果的按钮,并在启用货物接收按钮后立即启用。但它是对按钮进行分组而不是覆盖它们,所以你得到了 4 个按钮。已启用已收到付款 已禁用已收到货件 已禁用已收到货件 已连续启用所有已收到货件。
  • 好的,能不能加完整代码或者放到github上?
  • 我添加了没有 html 类和 span 标签的其余代码。我在上面详细描述了这种情况。我最好将第二组按钮放在他们自己的带有 id 的 div 中,然后使用引导切换在正确的时间隐藏正确的按钮。因为现在我得到了两个按钮的两种状态。

标签: jquery asp.net-mvc-4 razor


【解决方案1】:

如果您使用的是 Bootstrap 4,而不是

new { @class = "btn btn-default" , disabled = "disabled"}

试试

new { @class = "btn btn-default disabled"}

这对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-02
    • 2013-09-02
    • 2014-01-03
    • 2021-04-08
    • 1970-01-01
    • 2022-08-11
    • 2022-12-04
    • 1970-01-01
    相关资源
    最近更新 更多