public T GetElement <T>(string elementId) where T : ScriptElement { ScriptElement e = null; if (!_elementsCache.TryGetValue(elementId, out e)) { lock (_elementsCache) { if (!_elementsCache.TryGetValue(elementId, out e)) { DTObject element = GetElementById(elementId); if (element == null) { //没有找到输入项时,采用自由模式 element = DTObject.Create("{id,metadata:{}}"); element.SetValue("id", elementId); _scriptHeader.AppendFormat("var {0} = $('#{0}');", elementId); } //if (element == null) throw new XamlException("没有找到编号为" + elementId + "的脚本元素"); e = ElementFactory.Create <T>(this, element) as T; _elementsCache.Add(elementId, e); } } } return((T)e); }
/// <summary> /// 获得视图的提交者 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public T GetSender <T>() where T : ScriptElement { if (_sender == null) { if (_input == null) { throw new XamlException("视图没有提交者"); } var sender = _input.GetObject("sender", null);//{sender:{},elements:[{id:'xxxx',metadata:xxxx}]} if (sender == null) { throw new XamlException("视图没有提交者"); } _sender = ElementFactory.Create <T>(this, sender); } return(_sender as T); }