对于一个项目,我需要一种动态的加载部分视图的方法,最好是通过
jquery / ajax.
以下是我需要的功能:
>用户输入表单.显示一个下拉列表,并使用一些输入控件呈现通用的部分视图.
>用户在下拉列表中选择不同的值
>部分视图刷新.根据下拉列表的值,它应该加载部分视图.某些值具有与它们相关联的自定义视图(我可以使用主键来命名它们),而另一些则没有.当没有自定义视图;它应该加载默认值.当有一个,它当然应该加载定制的.
所有这些都应该在可能的情况下进行评估.
解决方法
假设你有一个下拉列表:
@Html.DropDownListFor( x => x.ItemId,new SelectList(Model.Items,"Value","Text"),new { id = "myddl",data_url = Url.Action("Foo","SomeController") } )
您可以订阅此下拉列表的.change()事件,并向控制器操作发送一个AJAX请求,该操作将返回一个部分并将结果注入到DOM中:
<script type="text/javascript"> $(function() { $('#myddl').change(function() { var url = $(this).data('url'); var value = $(this).val(); $('#result').load(url,{ value: value }) }); }); </script>
并将DIV标签放在您希望在主机视图中呈现部分视图的位置:
<div id="result"></div>
在Foo动作中,您可以返回部分视图:
public ActionResult Foo(string value) { SomeModel model = ... return PartialView(model); }