Помогите с asp.net mvc EditorFor - PullRequest
1 голос
/ 23 февраля 2011

У меня есть модель проекта и модель задачи.

скажи, в моем контроллере у меня есть

public ActionResult Create()
{
   Project p = new Project();
   Task t1=new Task();
   Task t2=new Task();
   Task t3=new Task();
   p.tasks.Add(t1);
   p.tasks.Add(t2);
   p.tasks.Add(t3);
}

и в моем строго типизированном View for Project у меня есть

Html.EditorForModel()

Как сделать так, чтобы в этом поле отображались поля для проекта, а также для каждой задачи?

пожалуйста, помогите!

------- Добавлено для уточнения

public ActionResult Create(Guid LicenseId)
        {
            License license;
            if (!User.IsInRole("admin"))
                license = _service.GetContributor(User.Identity.Name).Licenses.Single(l => l.Id == LicenseId);
            else
                license = _service.GetLicenseById(LicenseId);
            if (license == null)
                return RedirectToAction("Index", "Home");
            IncomeDeclaration i = new IncomeDeclaration();
            foreach(var ecoActLicense in license.EconomicActivitiyLicenses)
            {
                EconomicActivityIncomeDeclaration ecoActIncDec = new EconomicActivityIncomeDeclaration();
                ecoActIncDec.ActivityTax = 20;
                ecoActIncDec.EconomicActivityId = ecoActLicense.EconomicActivityId;
                i.EconomicActivityIncomeDeclarations.Add(ecoActIncDec);
            }
            return View(i);
        }

В этом коде я впервые связываю декларации EconomicActivityIncome с декларацией IncomeDeclaration.

и в представлении, которое строго напечатано для IncomeDeclaration, у меня просто есть

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>IncomeDeclaration</legend>

        @Html.EditorForModel()
        @Html.EditorFor(m =>m.EconomicActivityIncomeDeclarations)
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

1 Ответ

1 голос
/ 23 февраля 2011

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

Открытые свойства Project (если это указанная модель для строго типизированного представления) будут обнаружены и представлены для редактирования с метками и текстовыми полями.

Если вы хотите показать редактор для свойства, которое является коллекцией, вы можете сделать что-то вроде:

Html.EditorForModel(model => model.tasks)

При необходимости вы можете добавить шаблон EditorTemplate для элемента коллекции: Views-->Shared-->EditorTemplates-->Task.cshtml.

...