MVC 6 VNext how to set HtmlFieldPrefix?

后端 未结 2 1212
名媛妹妹
名媛妹妹 2021-01-18 21:08

My view is divided into partial views. Hence, at the time of submission my model isn\'t reconstructed correctly.

The page view displays employee data, where Employe

2条回答
  •  独厮守ぢ
    2021-01-18 21:38

    Here is the solution,

    namespace Website1.Extensions
    {
        public static class HtmlHelper
        {
            public static IHtmlContent Partial(this IHtmlHelper htmlHelper, string partialViewName, object model, string prefix)
            {
                var viewData = new ViewDataDictionary(htmlHelper.ViewData);
                var htmlPrefix = viewData.TemplateInfo.HtmlFieldPrefix;
                viewData.TemplateInfo.HtmlFieldPrefix += !Equals(htmlPrefix, string.Empty) ? $".{prefix}" : prefix;
                return htmlHelper.Partial(partialViewName, model, viewData);
            }
    
            public static Task PartialAsync(this IHtmlHelper htmlHelper, string partialViewName, object model, string prefix)
            {
                var viewData = new ViewDataDictionary(htmlHelper.ViewData);
                var htmlPrefix = viewData.TemplateInfo.HtmlFieldPrefix;
                viewData.TemplateInfo.HtmlFieldPrefix += !Equals(htmlPrefix, string.Empty) ? $".{prefix}" : prefix;
                return htmlHelper.PartialAsync(partialViewName, model, viewData);
            }
        }
    }
    

    employee.cshtml

    @using Website1.Extensions;
    @model Employee
    @Html.Partial("_contactInfo", Model.ContactInfo, nameof(Model.ContactInfo))
    

    _contactInfo.cshtml

    @using Website1.Extensions;
    @model ContactInfo
    @Html.Partial("_phoneInfo", Model.PhoneInfo, nameof(Model.PhoneInfo))
    

    _phoneInfo.cshtml

    @model PhoneInfo
    
    

提交回复
热议问题