首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态加载部分视图

动态加载部分视图
EN

Stack Overflow用户
提问于 2011-04-07 20:50:35
回答 2查看 15.8K关注 0票数 12

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

下面是我需要的功能:

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

如果可能的话,这一切都应该得到公正的对待。

我读过一些关于动态加载部分的内容,但是我想重新发布完整的案例,这样我就可以为这个特定的案例找到最好的解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-07 21:00:01

假设你有一个下拉列表:

代码语言:javascript
复制
@Html.DropDownListFor(
    x => x.ItemId,
    new SelectList(Model.Items, "Value", "Text"),
    new { 
        id = "myddl", 
        data_url = Url.Action("Foo", "SomeController")
    }
)

您可以订阅该下拉列表的.change()事件,并向控制器动作发送AJAX请求,该操作将返回部分结果并将结果注入DOM:

代码语言:javascript
复制
<script type="text/javascript">

$(function() {
   $('#myddl').change(function() {
       var url = $(this).data('url');
       var value = $(this).val();
       $('#result').load(url, { value: value })
    });
});

</script>

并将DIV标记放置在主机视图中希望部分视图呈现的位置:

代码语言:javascript
复制
<div id="result"></div>

在Foo操作中,可以返回一个部分视图:

代码语言:javascript
复制
public ActionResult Foo(string value)
{
    SomeModel model = ...
    return PartialView(model);
}
票数 16
EN

Stack Overflow用户

发布于 2011-04-07 20:57:48

您应该处理combobox的值更改事件,获取选中的Id,然后使用ajax调用服务器操作,传递所选Id。服务器操作将返回相应的视图。在客户端,您将返回的视图填充到页面上的某个区域。

例如,服务器端操作:

代码语言:javascript
复制
public ActionResult GetView(int id)
{
    switch (id)
    {
        case 1:
            return View("View1", model1);
            break;
        case 2:
            return View("View2", model2);
            break;
        default:
            return View("Default", modelDefault);
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5587485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档