【问题标题】:MVC Controller Activate and DeactivateMVC 控制器激活和停用
【发布时间】:2016-02-02 16:41:15
【问题描述】:

我在视图中的 href 下有一个提交元素。我想从会话变量中激活它并在此视图的控制器的函数 index() 下停用它。有可能吗?

<a href="/Checkout/AddressAndPayment" input type="submit" data-id="1" role="button" >
    BuyItem
</a>

【问题讨论】:

  • 我会质疑你的上下文?您肯定想要 A:隐藏不应该点击的链接,或者 B:在操作方法上添加 Authorization 属性?另外,如果您使用 MVC,为什么不使用帮助程序?
  • 我知道,但我还没有写过这段代码,但它工作正常。我只想从控制器激活或停用输入按钮
  • 所以你想根据会话变量禁用它?
  • 是从控制器的功能索引
  • 您不能禁用&lt;a&gt; 元素。

标签: asp.net-mvc model-view-controller


【解决方案1】:

因此,您可以禁用链接的唯一方法是在 UI 中。有很多方法可以做到这一点...

我猜MVC hack 是在ViewBag 中存储一些东西。在控制器中你可以设置任何变量,例如:

ViewBag.CanIClickMyLink = true;

然后在视图中你可以使用这个:

@Html.ActionLink("Buy Item", "AddressAndPayment", "Checkout", null, new { @enabled = ViewBag.CanIClickMyLink })

<a href="@(ViewBag.Enabled ? "https://www.google.co.uk" : "#")">
       BuyItem
</a>

或者,您可以使用Session 访问用户会话中的属性,这可能会带来更多开销。我希望这有助于您入门,我可以随时扩展我的答案。

我个人会在 MVC 模型属性中包含任何重要的变量,例如用户授权。它总是感觉更干净,更健壮。与动态 ViewBag 不同,它是一个强类型类。使用 ViewBag 时很容易出现错误。

【讨论】:

  • 如果更简单,我可以使用输入框而不是链接
  • 您的 Html 标签类型真的没什么区别......我建议&lt;a&gt; 是正确的选择。将 Enabled 设置为 false 应该会禁用点击功能。
  • 非常正确,在这种情况下,我会简单地将Href 更改为“#”,我会更新我的答案。然后,您可以适当地设置它的样式。
猜你喜欢
  • 2021-11-07
  • 2014-08-03
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多