gpt4 book ai didi

asp.net-mvc-2 - 用于实现 CanExecute 样式命令的 ASP MVC 2 模式

转载 作者:行者123 更新时间:2023-12-01 01:27:11 25 4
gpt4 key购买 nike

我来自 WPF (MVVM) 背景并试图转移到 MVC 2。在 MVC2 中是否有任何模式可以使用命令/命令按钮,如 <input>用于提交表单,以便在尝试渲染 View 时可以隐藏/禁用。

在 MVVM 世界中,您的命令可以实现 ICommand 接口(interface),并且它具有 CanExecute 方法,非常有用。我想知道 ASP MVC 2 中是否有类似的东西?

我能想到的唯一方法是在 View 中执行此操作,以便我可以检查 ViewModel (CanSave) 上的标志,并根据显示/隐藏 <input>标签。

基本上我想要运行 2 个版本的网站,一个处于只读模式,另一个处于编辑模式。

如果您需要任何澄清,请告诉我。

最佳答案

ASP.NET MVC 没有经典的 ASP.NET 和 WPF 中的“控件”概念。 ASP.NET MVC 的基础 block 是 HTML 元素,例如 <input> , <button>等等。自然,这些不提供您正在寻找的功能(即 ICommand 接口(interface)的实现)。

您正在查看的场景(即表单的两种模式)可以(并且可以说应该)在 View 级别处理。您已经面临正确的方向:在您的模型上有一个“CanSave”属性,并在 View 中使用它来确定生成的内容。

例子:

<% if (Model.CanSave)
{ %>
<p>First Name: <%= Html.TextBox("firstname", Model.firstname) %> </p>
<% }
else
{ %>
<p>First Name: <%=Model.firstname %></p>
<% } %>

您可能需要查看 DisplayTemplates 和 EditorTemplates...对于这种情况非常方便。布拉德威尔逊做得很好 here .

它将帮助您实现这一目标:
<%= (Model.CanSave) ? Html.EditorFor(x => x.firstname) : Html.DisplayFor(x => x.firstname) %>

...这使您的 View 干净美观。

关于asp.net-mvc-2 - 用于实现 CanExecute 样式命令的 ASP MVC 2 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6980585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com