Атрибут Asp.net MVC4 @Html.EditorFor .Where()

На мой взгляд, я использую шаблон редактора, как показано ниже:

редактировать.cshtml

@model NetasCrm.Models.CRM_OPP_DETAILS 

<table class="table table-hover">
<thead>
    <tr>
        <th>Çözüm</th>
        <th>Üretici</th>
        <th>Tarih</th>
        <th>Tutar</th>
        <th>Sil</th>
    </tr>
</thead>
    <tbody>
        @Html.EditorFor(model => model.CRM_SOLUTION_DISTRIBUTION, new { Solutions = ViewBag.Solutions, Vendors = ViewBag.Vendors })
        @Html.HiddenFor(model => model.ID)         
    </tbody>
</table>

Это работает, но я пытаюсь что-то сделать (добавив предложение where.), Как показано ниже, чтобы создать шаблон редактора для некоторых элементов моей модели.

@Html.EditorFor(model => model.CRM_SOLUTION_DISTRIBUTION.Where(p=>p.AMOUNT != 0), new { Solutions = ViewBag.Solutions, Vendors = ViewBag.Vendors })

Я получаю следующую ошибку:

Шаблоны можно использовать только с доступом к полям, доступом к свойствам, индексом одномерного массива или выражениями пользовательского индексатора с одним параметром.


person umki    schedule 20.09.2013    source источник


Ответы (2)


Html.XxxFor ожидает лямбда-выражение, которое выбирает свойство из модели. Это используется для определения свойства модели, которое будет отредактировано.

То, чего вы пытаетесь достичь, вероятно, это то, что вы можете сделать с помощью шаблона редактора.

Интересные статьи о шаблонах редакторов и их реализации:

Во второй статье вы можете увидеть, что если у вас есть собственный класс с данными, которые вы хотите отредактировать, вы можете создать шаблон, который будет автоматически использоваться для вашего редактора, если вы дадите ему правильное имя и сохраните его в нужном месте. Вы можете создать класс с одним полем и включить его в свою модель вместо исходного свойства. Это также позволяет редактировать несколько свойств одновременно (объявление класса с этими свойствами)

Другим вариантом будет собственный помощник html:

person JotaBe    schedule 20.09.2013

Это не то, как следует использовать @Html.EditorFor(), об этом говорится в сообщении об ошибке.

Чтобы отобразить то, что вы хотите, вы можете либо использовать Html.Partial(), либо создать отдельное свойство в своей модели и переместить Where в его геттер.

person Dima    schedule 20.09.2013
comment
Я пытаюсь поместить форму ввода для каждого элемента в модель с использованием @html.editofor. Частичный HTML будет долгим способом сделать это. Я пытаюсь поиграть с моделью. - person umki; 20.09.2013