这次做的是一个联动,根据渠道与品类得相应的MD。
function InquireMD(obj, cbtm, ml) { if (cbtm == ‘CooperationMode‘) { var varCC = obj.value; //品类 var varCM = $("#" + cbtm).val(); //渠道 } else if (cbtm == ‘Category‘) { var varCM = obj.value; //渠道 var varCC = $("#" + cbtm).val(); //品类 } if (varCM != ‘‘ && varCC!=‘‘) { $.ajax({ type: "Post", data: { CategoryCode: varCC, CooperationMode: varCM }, url: "/home/selectmdmanage", datatype: "json", success: function (result) { var strArea; if (result.success) { for (var item in result.data) { strArea += "<option value=‘‘>--选择MD--</option>"; strArea += "<option value=‘" + result.data[item].MdCode + "‘>" + result.data[item].Name + "</option>"; } if (strArea != null) { $("#" + ml).html(strArea); } else { strArea += "<option value=‘‘>--选择MD--</option>"; $("#" + ml).html(strArea); } } else { } } }); } } function victCM(cbtm) { var varCM = $("#" + cbtm).val(); if (varCM == ‘‘) { alert("请先选择合作渠道"); } }
以上是jquery的两个方法,InquireMD是当渠道与品类发生改变时的操作,传的参数分别是本身对象、品类标签或者渠道标签的Id、MD标签的id。为什么设置第二个参数是不定的,是因为为了使得渠道与品类可以共用一个方法,当然这样做就避免不了验证,所以有了判断cbtm的值。victCM是验证当在单品类是渠道是否为空,为空不允许选择品类。具体功能就是选择渠道后选择品类则出现对应MD,或者是你已经在数据库中保存了渠道与品类,此时你在不修改品类的情况下修改了渠道还是会刷新对应的MD。
<label> <span>合作渠道 :</span> @Html.DropDownList("CooperationMode", null, "--合作意向--", new { placeholder = "合作意向", req = "true", onchange = "InquireMD(this,‘Category‘,‘MdList‘)", }) <font style="color: Red;">*</font></label> <label> <span>合作品类 :</span> @Html.DropDownList("Category", null, "--合作品类--", new { placeholder = "合作品类", req = "true", onchange = "InquireMD(this,‘CooperationMode‘,‘MdList‘)", onclick = "victCM(‘CooperationMode‘)" }) <font style="color: Red;">*</font> </label> <label> <span></span><font color="red">若事先已联系MD请选择对应的MD,否则请忽略此项</font> </label> <label> <span>选择MD :</span> @Html.DropDownList("MdList", null, "--选择MD--", new { placeholder = "选择MD", req = "false" }) </label>
控制器方法也看一下,返回json格式的数据,具体的操作就不贴了。
//[Authorize] 身份过滤器 /// <summary> /// 根据合作品类与渠道查询对应md /// </summary> /// <param name="CategoryCode">合作品类</param> /// <param name="CooperationMode">合作渠道</param> /// <returns></returns> public ActionResult SelectMdManage(string CategoryCode,string CooperationMode) { var mdList = _mdService.GetSqlMdmanages(CategoryCode, CooperationMode); JsonTransaction<MdManage> transaction = new JsonTransaction<MdManage>(); var mdListNew = transaction.TransactionList(mdList); return Json(new { success = true, data = mdListNew }, JsonRequestBehavior.AllowGet); }
在这里接触到了过滤器,一个是url的一个过滤,一个是身份过滤。当我在视图中写ajax时,如何都不能够访问到控制器中的SelectMdManage方法,原来是设置了url的过滤,过滤以后有机会再交流。
时间: 2024-10-06 23:53:18