コード例 #1
0
        /// <summary>
        ///     Initialisiert eine neue Instanz der <see cref="T:System.Object" />-Klasse.
        /// </summary>
        protected MvcDynamicListItemAdder(DynamicListItemModel dynamicListItemModel, HtmlHelper listHtmlHelper)
        {
            Require.NotNull(listHtmlHelper, "listHtmlHelper");
            Require.NotNull(dynamicListItemModel, "dynamicListItemModel");

            _listHtmlHelper       = listHtmlHelper;
            _originalTemplateInfo = listHtmlHelper.ViewData.TemplateInfo;
            _dynamicListItemModel = dynamicListItemModel;

            _viewType            = _listHtmlHelper.ViewDataContainer.GetType();
            _viewTextWriterStack = GetPropertyValue <Stack <TextWriter> >(_listHtmlHelper.ViewDataContainer, _viewType, "OutputStack");
            _viewTextWriter      = GetPropertyValue <TextWriter>(_listHtmlHelper.ViewDataContainer, _viewType, "Output");
            _itemAdderTextWriter = new TemporaryTextWriter(_viewTextWriter.Encoding);

            TemplateInfo templateInfo = new TemplateInfo();

            templateInfo.HtmlFieldPrefix = dynamicListItemModel.ListExpressionText + "[" + Key + "]";

            _indexTemplateInfo = new TemplateInfo();
            _indexTemplateInfo.HtmlFieldPrefix = dynamicListItemModel.ListExpressionText + "[" + Key + "]";

            ViewDataDictionary viewDataDictionary = new ViewDataDictionary();
            ViewContext        viewContext        = new ViewContext(listHtmlHelper.ViewContext.Controller.ControllerContext, listHtmlHelper.ViewContext.View, viewDataDictionary, listHtmlHelper.ViewContext.TempData, new TemporaryTextWriter(listHtmlHelper.ViewContext.Writer.Encoding));

            _itemHtmlHelper = new HtmlHelper <TListItem>(viewContext, new ViewPage(), new RouteCollection());
            _itemHtmlHelper.ViewData.TemplateInfo               = templateInfo;
            _itemHtmlHelper.ViewContext.ViewData.TemplateInfo   = templateInfo;
            ((HtmlHelper)_itemHtmlHelper).ViewData.TemplateInfo = templateInfo;

            _originalTextWriter = listHtmlHelper.ViewContext.Writer;
        }
コード例 #2
0
        /// <summary>
        ///     Initialisiert eine neue Instanz der <see cref="T:System.Object" />-Klasse.
        /// </summary>
        public MvcDynamicListItemAdder(HtmlHelper htmlHelper, DynamicListItemModel dynamicListItemModel, TListItem listItem)
            : this(dynamicListItemModel, htmlHelper)
        {
            _listItem = listItem;
            _itemHtmlHelper.ViewData.Model = listItem;
            _itemHtmlHelper.ViewData.ModelMetadata.Model = listItem;

            BeginDynamicListItem();
        }
コード例 #3
0
        /// <summary>
        /// Initialisiert eine neue Instanz der <see cref="T:System.Object"/>-Klasse.
        /// </summary>
        protected MvcDynamicListItem(string key, DynamicListItemModel dynamicListItemModel, HtmlHelper listHtmlHelper)
        {
            Require.NotNull(listHtmlHelper, "listHtmlHelper");
            Require.NotNull(dynamicListItemModel, "dynamicListItemModel");
            Require.NotNullOrWhiteSpace(key, "key");

            Key = key;

            _listHtmlHelper       = listHtmlHelper;
            _dynamicListItemModel = dynamicListItemModel;
            _originalTemplateInfo = listHtmlHelper.ViewData.TemplateInfo;

            ViewDataDictionary viewDataDictionary = _listHtmlHelper.ViewData;
            ViewContext        viewContext        = new ViewContext(listHtmlHelper.ViewContext.Controller.ControllerContext, listHtmlHelper.ViewContext.View, viewDataDictionary, listHtmlHelper.ViewContext.TempData, listHtmlHelper.ViewContext.Writer);

            TemplateInfo templateInfo = new TemplateInfo();

            _itemHtmlHelper = new HtmlHelper <TListItem>(viewContext, new ViewPage(), new RouteCollection());
            _itemHtmlHelper.ViewData.TemplateInfo                           = templateInfo;
            _itemHtmlHelper.ViewContext.ViewData.TemplateInfo               = templateInfo;
            ((HtmlHelper)_itemHtmlHelper).ViewData.TemplateInfo             = templateInfo;
            ((HtmlHelper)_itemHtmlHelper).ViewContext.ViewData.TemplateInfo = templateInfo;

            foreach (string modelStateKey in _listHtmlHelper.ViewData.ModelState.Keys)
            {
                _itemHtmlHelper.ViewData.ModelState.Add(modelStateKey, _listHtmlHelper.ViewData.ModelState[modelStateKey]);
                ((HtmlHelper)_itemHtmlHelper).ViewData.ModelState.Add(modelStateKey, _listHtmlHelper.ViewData.ModelState[modelStateKey]);
            }

            templateInfo.HtmlFieldPrefix = dynamicListItemModel.ListExpressionText + "[" + Key + "]";

            /*Das ist der Key für den Dictionary-Eintrag*/
            _itemHtmlHelper.ViewContext.Writer.Write("<div " + _dynamicListItemModel.GetHtmlAttributes() + ">");
            //_itemHtmlHelper.ViewContext.Writer.Write("<input name=\"" + templateInfo.HtmlFieldPrefix + "\" type=\"hidden\" value=\"" + Key + "\">");

            /*Damit die Werte für die Dictionary-Values gebunden werden können, muss value davor.*/
            templateInfo.HtmlFieldPrefix = dynamicListItemModel.ListExpressionText + "[" + Key + "]";
        }
コード例 #4
0
 public MvcDynamicListItemAdder(HtmlHelper htmlHelper, DynamicListItemModel dynamicListItemModel) : this(dynamicListItemModel, htmlHelper)
 {
     BeginDynamicListItem();
 }
コード例 #5
0
 public MvcDynamicListItem(HtmlHelper htmlHelper, string key, DynamicListItemModel dynamicListItemModel)
     : this(key, dynamicListItemModel, htmlHelper)
 {
 }
コード例 #6
0
 /// <summary>
 /// Initialisiert eine neue Instanz der <see cref="T:System.Object"/>-Klasse.
 /// </summary>
 public MvcDynamicListItem(HtmlHelper htmlHelper, string key, DynamicListItemModel dynamicListItemModel, TListItem listItem)
     : this(key, dynamicListItemModel, htmlHelper)
 {
     _listItem = listItem;
     _itemHtmlHelper.ViewData.Model = listItem;
 }