0 Вопрос: В представлении модель показывает два разных значения

вопрос создан в Thu, May 2, 2019 12:00 AM

значения этих двух разные. Теперь уверен, почему это так. У кого-нибудь есть идея, почему это случилось?

     @Html.HiddenFor(m=>m.categoryCode, new { id="catCode", @Name="catCode"})           

    <input type="hidden" value="@Model.categoryCode"/>

Ниже приведено представление, использующее запрос ajax

@using (Ajax.BeginForm("UpdateShowroomCatClassMake", "Showroom", null, new AjaxOptions
                {
                    InsertionMode = InsertionMode.Replace,
                    HttpMethod = "GET",
                    UpdateTargetId = "ShowroomDiv",
                    OnSuccess = "CompleteUpdate",
                }, new { @class = "form-inline", method = "Get", id = "UpdateForm" }))
            {
                <div id="ShowroomDiv">
                    @Html.Partial("~/Views/Showroom/Filters/CatClassMakeFilter.cshtml", Model.catClassMakeFilterVM)

                </div>
                <div id="filterModal" class="modal fade" role="dialog">
        <div class="modal-dialog">

            <!-- Modal content-->
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                    <h4 class="modal-title">Filters</h4>
                </div>
                <div class="modal-body">
                    <div class="filters-modal-container">

                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                </div>
            </div>

        </div>
    </div>

CatClassMakeFilter.cshtml


@model Models.ShowroomVM.FiltersVM.CatClassMakeFilterVM


<div class="filters-container hidden-xs">
    <div class="filters-container-content">
        <div class="form-group padding-15">
            @Html.HiddenFor(m=>m.categoryCode, new { id="catCode", @Name="catCode"})
            <input type="hidden" value="@Model.categoryCode"/>
            <label>@Model.categoryLabel:</label>
            @Html.DropDownListFor(m =>m.categoryCode, new SelectList(Model.categories, "Value", "Text"), new { @class = "form-control margin-bottom-5", @onchange = "$('#UpdateForm').submit()" })
        </div>
        <div class="form-group padding-15">
            <label>@Model.classLabel:</label>
            @Html.DropDownListFor(m => m.classCode, Model.classes, new { @class = "form-control margin-bottom-5", @onchange = "$('#UpdateForm').submit()" })
        </div>
        <div class="form-group padding-15">
            <label>@Model.makeLabel:</label>
            @Html.DropDownListFor(m => m.make, Model.makes, new { @class = "form-control margin-bottom-5", @onchange = "$('#UpdateForm').submit()" })
        </div>
        <div class="form-group padding-15">
            <label class="">Sort By:</label>
            @Html.DropDownListFor(m => m.sortbyFilterVM.sortBy, Model.sortbyFilterVM.SortSelectionDDL, new { @class = "form-control margin-bottom-5", @onchange = "$('#UpdateForm').submit()" })
        </div>

        @Html.HiddenFor(m => m.showroomID)
        @Html.HiddenFor(m => m.page)
    </div>
</div>

Я обновляю значения через запрос ajax. возвращаемое представление - The CatClassMakeFilter.cshtml и значения обоих отличаются.

The CatClassMakeFilterVM.cs


public class CatClassMakeFilterVM : BaseFilterVM
    {
        public CatClassMakeFilterVM()
        {
            categories = new List<SelectListItem>();
            classes = new List<SelectListItem>();
            makes = new List<SelectListItem>();
            sortbyFilterVM = new SortByFilterVM();
        }

        public string categoryLabel { get; set; }
        public string classLabel { get; set; }
        public string makeLabel { get; set; }

        public string categoryCode { get; set; }
        public List<SelectListItem> categories { get; set; }

        public string classCode { get; set; }
        public List<SelectListItem> classes { get; set; }

        public string make { get; set; }
        public List<SelectListItem> makes { get; set; }

        public SortByFilterVM sortbyFilterVM { get; set; }
    }

Вот значения, которые я вижу в инструментах Chrome Dev

 введите описание изображения здесь

    
- 2
  1. поместите @ в объект id, @ id = "catCode"
    2019-05-02 14: 46: 42Z
  2. укажите Mvce
    2019-05-02 14: 47: 26Z
  3. Поскольку первый назначается из ModelState, т.е. ранее опубликованные значения. Вы имеете в виду, что вы переназначаете значение в контроллере после POST и не видите обновленное значение в вашей форме?
    2019-05-02 14: 47: 32Z
  4. Значения отличаются, потому что вы не назначаете значение для первого html.hiddenfor, а во втором вы отображаете значение, но не предоставляете ему идентификатор для ввода
    2019-05-02 14: 48: 43Z
  5. @ Иван-Сан "Вы не назначаете значение для первого html.hiddenfor" ... это совсем не так, OP связал поле с m. categoryCode.
    2019-05-02 14: 54: 45Z
0 ответов                              0                         
источник размещен Вот