Просмотр и сбор вопросов - PullRequest
0 голосов
/ 11 июля 2011

Я покрываю свое приложение от webforms до mvc, в данный момент я нахожусь в проблеме дизайна (хорошо, я просто не знаю, как сделать это в mvc).

В основном моя модель будет выглядеть примерно так:

public class DamagedItem 
{
  public Int32 LoanId {get;set;}
  public String IdentityCode {get;set;}
  public virtual ICollection<DamagedItems> DamagedItems {get;set;}
}

В моем контроллере я хотел бы сделать:

public ActionResult Add(DamagedItem damagedItem)
{
  //Do update logic here

}

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

Вот изображение, когда я хочу сделать: enter image description here

Я просто не знаю, как изложить это в моем представлении, как добавить такие элементы в мою коллекцию ICollection, затем обновлять представление, когда мне нужно сохранить, у меня есть доступ к тому, что я добавил из моего контроллера?

Спасибо, Ник

Редактировать:


Я думал об использовании частичного в представлении и выполнении всей логики для нижней половины, используя ajax и сохраняя его в переменной сеанса, но я бы предпочел НЕ делать его зависимым от ajax.

Ответы [ 2 ]

0 голосов
/ 11 июля 2011

Лучше отделить: у вас должно быть 2 действия, которые производят 2 вида.

Необходимо иметь класс LoadInformationModel:

public class LoadInformationModel 
{
  public string StudentCode { get; set; }
  public string FirstName { get; set; }
  // etc..

  public ICollection<Damage> Type { get; set; }
}

соответствующее действие

[HttpGet]
public ActionResult LoanInformation(int id) 
{
  var loanInfo = // get data by given id..
  var model = new LoadInformationModel {
    StudentCode = loanInfo.StudentCode,
    // etc
    Type = new List<Damage> { new Damage { Value = "Damaged"}, new Damage { Value = "Damaged Again" }
  }

  return View(model);
}

, а также класс RepairDataModel

открытый класс RepairDataModel {public bool CoveredByWarranty{ получить;задавать;} public ICollection Status {get;задавать;}}

И соответствующее действие

[HttpGet]
public ActionResult Repair(int id) 
{
  // logic
  return View(model);
}

Ваша задача - создать обработчик Post, который будет сохранять данные в БД, а затем отправлять форму

[HttpPost]
public ActionResult(RepairDataModel model)
{
   // save to db
   return View();
}

Представление, возвращаемоеМетод Index () можно создать как

@Html.RenderAction("LoanInformation")

@Html.RenderAction("Repair")

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

0 голосов
/ 11 июля 2011

Я вижу только то, что только у DamagedItem отсутствует конструктор со значениями для Collection;

public class DamagedItem 
{
  public DamagedItem() 
  {
    DamagedItems = new List<DamagedItems>();
    DamagedItems.Add(new DamagedItem { Description = "Damaged" } );
  }

  public Int32 LoanId {get;set;}
  public String IdentityCode {get;set;}
  public virtual ICollection<DamagedItems> DamagedItems {get;set;}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...