как взять имя префикса поля ввода в MVC3 Razor - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть ViewModel, View, который использует эту модель и контроллер

, у меня есть поля ввода, такие как:

@Html.EditorFor (model => model.TransitApplication.ApplicationDate)

и имя поля TransitApplication_ApplicationDate

Я хочу обновить некоторые данные из представления в базе данных, но есть одна проблема

источник обновления контроллера

 public ActionResult Update(int id, FormCollection collection)
    {

        string prefix = "TransitApplication";

        TransitApplication transitApplication = transitApplicationRepozitory.GetById(id);

        if (transitApplication == null)
            return Content("Error! Not Found!");

        if (TryUpdateModel(transitApplication, prefix))
        {
            if (ModelState.IsValid)
            {
               transitApplicationRepozitory.Update(transitApplication);
               transitApplicationRepozitory.Save();
               return RedirectToAction("Index");
            }
        }

        return Content("Error!");
    }

Iхочу использовать префиксное имя (TransitApplication) программно, а не как у меня есть строка prefix = "TransitApplication";

несколько советов?

1 Ответ

0 голосов
/ 01 февраля 2012

Видя, что префикс формы создается с использованием имени класса свойства Model, как насчет:

if (TryUpdateModel(transitApplication, typeof(TransitApplication).Name))

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

Альтернатива - это вымог бы использовать что-то вроде этого метода GetPropertyInfo , что позволило бы вам получить имя свойства в виде строки, подобной этой var propertyInfo = GetPropertyInfo(yourModelObject, u => u.UserID); - хотя в настоящее время у вас нет экземпляра класса модели в вашей атм действия.

...