我想创建一个表示为下拉列表的字段类型的编辑器模板。在编辑器模板的定义中,我想使用调用控件上的动作来调用DropDownList,返回结果为JSON – 任何想法如何做?
例如:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<TheFieldType>" %> <%= Html.DropDownList(.....
解决方法
在编辑器模板中提供一个空的下拉列表:
<%= Html.DropDownListFor( x => x.PropertyToHoldSelectedValue,Enumerable.Empty<SelectListItem>(),"-- Loading Values --",new { id = "foo" }) %>
然后设置一个将返回值的控制器操作:
public class FooController: Controller { public ActionResult Index() { return Json(new[] { new { Id = 1,Value = "value 1" },new { Id = 2,Value = "value 2" },new { Id = 3,Value = "value 3" },},JsonRequestBehavior.AllowGet); } }
然后使用AJAX填充值:
$(function() { $.getJSON('/foo/index',function(result) { var ddl = $('#foo'); ddl.empty(); $(result).each(function() { $(document.createElement('option')) .attr('value',this.Id) .text(this.Value) .appendTo(ddl); }); }); });