【问题标题】:MVC 3: Show/Hide logic for loading form elements via ajaxMVC 3:通过 ajax 加载表单元素的显示/隐藏逻辑
【发布时间】:2012-11-26 01:24:42
【问题描述】:

我目前正在使用 mvc 3 和 c# 设计一个 Web 应用程序。我必须做以下场景,并试图确定平台的正确实现是什么。在这里,我必须根据下拉列表的选择来显示/隐藏几个表单元素(文本框),这也应该是表单的一部分。在 mvc 3 平台下实现这一点的最佳方法是什么。我遇到的一个主要问题是,所有应该出现的元素也应该是必需的,而其他元素不应该是必需的。我更喜欢使用 DataAnnotation 验证。我是否应该首先呈现所有表单元素并使用 javascript 根据下拉选择来确定显示/隐藏哪些元素?这里的问题似乎是如何在保持验证逻辑的同时改变所需的逻辑,以确保如果在任何字段中输入任何内容,它就会被验证?另一方面,为每个需要的表单创建一个局部视图并根据下拉选择显示/隐藏局部视图似乎有点过头了,更不用说由于圆形滴漏而导致效率低下。

【问题讨论】:

    标签: c# .net asp.net-mvc-3 jquery asp.net-ajax


    【解决方案1】:

    也许你可以在前端使用 jQuery 来做到这一点。例如

    <select name="source" id="source">
      <option value="null" selected="selected">&mdash;Select&mdash;</option>
      <option value="o1">Option 1</option>
      <option value="o2">Option 2</option>
      <option value="o3">Option 3</option>
    </select>
    
    <div id="content"> some content to show/hide </div>
    

    以及对应的jquery:

    $('#source').change(function() {
        ($(this).val() == "o3") ? $('#content').show() : $('#content').hide();
    });
    

    所以基本上当有人选择选项 3 时,会显示 div 内容。我不确定您为什么需要使用 ajax,但您可以在提交数据后验证服务器端的值。

    使用 Mvc.ValidationToolkit 查看条件验证也可能有益:

    【讨论】:

    • 如果我想使用 DataAnnotations 和 ViewModel 我将如何确保可见字段是必需的,隐藏字段不是必需的,并且还维护 DataAnnotations 以确保如果用户尝试偷偷摸摸地在隐藏字段之一中输入一个值,其他非必需的 DataAnnotations 抓住了它?
    • 刚刚更新了我的答案。看看 Mvc.ValidationToolkit:blogs.msdn.com/b/simonince/archive/2011/09/29/…
    • 您是否能够使用 Mvc.ValidationToolkit 实现这种方法?这似乎正是我所需要的。这不是标准构建的一部分似乎很奇怪,因为我认为更多的开发人员会面临这个问题。
    • 感谢您的解决方案。一直为这个而疯狂。
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多