asp.net-mvc - 动态加载局部 View

标签 asp.net-mvc asp.net-mvc-3

对于一个项目,我需要一种动态加载部分 View 的方式,最好是通过 jquery/ajax。

这是我需要的功能:

  • 用户输入表格。显示一个下拉列表,并使用一些输入控件呈现通用局部 View 。
  • 用户在下拉列表中选择不同的值
  • 局部 View 刷新。根据下拉列表的值,它应该加载部分 View 。一些值具有与之关联的自定义 View (例如,我可以用主键命名它们),而另一些则没有。当没有自定义 View 时;它应该加载默认值。当有一个时,它当然应该加载自定义的。

  • 如果可能,这一切都应该被 ajaxified。

    我已经阅读了一些关于动态加载部分的内容,但我想重新发布完整的案例,以便我可以找到针对这个特定案例的最佳解决方案。

    最佳答案

    假设您有一个下拉列表:

    @Html.DropDownListFor(
        x => x.ItemId,
        new SelectList(Model.Items, "Value", "Text"),
        new { 
            id = "myddl", 
            data_url = Url.Action("Foo", "SomeController")
        }
    )
    

    您可以订阅 .change()此下拉列表的事件并将 AJAX 请求发送到 Controller 操作,该操作将返回部分并将结果注入(inject) DOM:
    <script type="text/javascript">
    
    $(function() {
       $('#myddl').change(function() {
           var url = $(this).data('url');
           var value = $(this).val();
           $('#result').load(url, { value: value })
        });
    });
    
    </script>
    

    并在您希望在主机 View 中呈现局部 View 的位置放置一个 DIV 标记:
    <div id="result"></div>
    

    在 Foo Action 中,您可以返回部分 View :
    public ActionResult Foo(string value)
    {
        SomeModel model = ...
        return PartialView(model);
    }
    

    关于asp.net-mvc - 动态加载局部 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5587485/

    相关文章:

    c# - 我可以为给定的 ActionResult 手动调用 ClaimsAuthorizationManager 吗?

    asp.net-mvc - 为什么我的 View 模型中的内部成员无法在 View 中访问?

    asp.net-mvc - 数字中允许使用点和逗号,不仅适用于小数

    c# - 如何更新 ModelStateDictionary 中的错误值?

    jquery - 如何使用 jQuery 调用 MVC ChildActionOnly Controller 操作

    asp.net-mvc - 如何在一个 View 中使用两个 IEnumerable 模型

    asp.net-mvc - 在 ASP.NET core 中指定路由的 Controller 命名空间

    javascript - 获取/获取在 Kendo DropdownList 的数据源上查询的数据并在 Google map 上使用它

    asp.net-mvc - 在 .NET MVC 3 中使用 REST Web 服务

    asp.net-mvc-3 - Request.UserHostAddress 和Request.UserHostName 的值::1