加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 10:00:50 所属栏目:asp.Net 来源:网络整理
导读:我来自 WPF(MVVM)背景并尝试转向MVC 2.在MVC2中是否有任何模式,您可以使用命令/命令按钮,如 input您用来提交表单,以便在尝试渲染视图时隐藏/禁用. 在MVVM世界中,您的命令可以实现ICommand接口,并且它具有非常有用的CanExecute方法.我想知道ASP MVC 2中是否有
我来自 WPF(MVVM)背景并尝试转向MVC 2.在MVC2中是否有任何模式,您可以使用命令/命令按钮,如< input>您用来提交表单,以便在尝试渲染视图时隐藏/禁用.

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

我能想到的唯一方法是在View中进行,这样我就可以检查ViewModel(CanSave)上的标志,并根据它显示/隐藏< input>标签.

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

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

解决方法

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

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

例:

<% 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) %>

…这使您的视图干净,漂亮.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读