Проблема MVC 3, EditorFor () TextBoxFor () - PullRequest
0 голосов
/ 16 сентября 2011

Повышение скорости работы с MVC 3,

Возникла проблема с методом [HttpPost] ActionResult, который видит переданные данные, в зависимости от того, использую ли я EditorFor () или TextBoxFor () в моем представлении.

У меня есть несколько полей в окне «Правка», которые я хочу использовать только для чтения, поэтому я использовал:

<div class="editor-field">
    @Html.EditorFor(model => model.ModelNumber)
    @*Html.TextBoxFor(model => model.ModelNumber, new { disabled = "disabled", @readonly =      "readonly" })*@
    @*Html.ValidationMessageFor(model => model.ModelNumber)*@
    </div> 

Вот методы контроллера ActionResult:

 public ActionResult Edit(int id)
    {
        var NPSProc = db.NPSProcesseds.SingleOrDefault(p => p.Id == id);
        return View(NPSProc);
    }

    [HttpPost]
    public ActionResult Edit(NPSProcessed Processed)
    {
        try
        {

            if (ModelState.IsValid)
            {
                db.Entry(Processed).State = EntityState.Modified;
                db.SaveChanges();
                return new RedirectResult("~/Home", false);
            }
            else
            {
                return View("Edit", Processed);
            }
        }
        catch (DbEntityValidationException dbEx)
        {
            foreach (var validationErrors in dbEx.EntityValidationErrors)
            {
                foreach (var validationError in validationErrors.ValidationErrors)
                {
                    Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
                }
            }

            return View("Edit", Processed);
        }

КогдаЯ удаляю комментарии к методу EditorFor (), поле ModelNumber содержит значение ModelNumber в обработанном объекте, переданном методу HttpPost ActionResult.

Если я комментирую метод EditorFor () и удаляю комментарий в TextBoxFor() метод поле MethodNumber содержит ноль.

Похоже, что метод EditorFor () выполняет какую-то дополнительную работу, которую не выполняет метод TextBoxFor ().

Может кто-то указать мне правильныйНаправьте и укажите на ошибку, которую я совершаю.

Спасибо

Джо

Ответы [ 3 ]

5 голосов
/ 16 сентября 2011

Отключенные <input> элементы не отправляются обратно на сервер.

Поскольку вы установили disabled="disabled" в TextBoxFor, браузер никогда не отправляет это значение обратно.

2 голосов
/ 16 сентября 2011

входы, которые отключены, не отправляют назад.это часть HTML, вы никогда не получите значение для этого.Если вы хотите отправить сообщение, попробуйте только для чтения.

0 голосов
/ 12 августа 2015

Используйте метод TextBoxFor (), и поскольку отключенный объект не публикуется на сервере, вы можете добавить css class для этого элемента управления TextBoxFor как .disabled-контроль { дисплей: нет }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...