#asp.net #asp.net-mvc-3 #asp.net-mvc-2 #razor
#asp.net #asp.net-mvc-3 #asp.net-mvc-2 #бритва
Вопрос:
Связь между моделью и объектом базы данных (базовый заполнитель литературного содержимого):
public class TitlePercent
{
public int TitleName;
public decimal Percentage;
}
public class TitleMonthly
{
public string Month;
public int Val;
}
Мощность => 1 TitlePercent до * titlemonth
Иллюстрированный вид (предлагается):
_____________________________
Name | % || Jan | Feb |
_____________________________
Title1 2% 23 343
Title2 3% 343 3434
_____________________________
Контроллер (предлагается):
// Need view and edit
public ViewResult ViewTitlePercentAndTitleMontly()
{
return View(db.<NotSureWhatWouldGoHere>.ToList());
}
public ActionResult EditTitlePercentAndTitleMontly(int id)
{
return View(db.<NotSureWhatWouldGoHere>.Find(id));
}
Razor View (предлагаемый псевдоним):
…Просмотр и редактирование
@model MVC3.Models.TitlePercent
@model2 MVC3.Models.Название ежемесячно
1. For Index View to show the grid not sure how to mash this up (like the grid)
- Perhaps build this in the controller but not sure how to build and pass that to the view as
I have had not dealt with multiple models as relationships.
2. For Edit View need to figure out how to bind to a model similar to:
@Html.EditorFor(model => model.TitleName)
@Html.EditorFor(model => model.Percentage)
foreach TitleMonthly in TitlePercentag
{
@* Iterate and bind somehow *@
@Html.EditorFor(model2 => model2.Month)
@Html.EditorFor(model2 => model2.Val)
}
???
Извините за отсутствие деталей и псевдокода, но мне просто не приходилось иметь дело с несколькими моделями, особенно если они связаны / зависят друг от друга и в которых представление сетки может быть создано объединенными классами / таблицами….затем, если вы хотите отредактировать строку (комбинацию обоих классов, то как вы можете привязать все отношения к текстовым полям на основе этих двух моделей классов)?
Опять же, я буду подвергаться насмешкам по этому поводу, но любая информация и примеры будут с благодарностью оценены.
Комментарии:
1. Мэрайя, это тоже было камнем преткновения для меня.
Ответ №1:
Обычно вы используете нечто, называемое a ViewModel
, которое представляет собой очень специфическую модель, предназначенную для представления. Вы бы заполнили эту модель информацией из своей модели данных, а затем передали ее в представление. он не обязательно должен иметь структуру 1: 1, что позволяет вам иметь намного больше информации или намного меньше, в зависимости от ваших потребностей.
Для вашей модели редактора вы можете создать ViewModel, похожий на:
public class TitleEditingViewModel {
public TitlePercent TitlePercent {get;set;}
public ICollection<TitleMonthly> MonthlyTitles {get;set;}
}
Затем вы должны заполнить эту модель, как хотите, в контроллере, а затем передать модель в представление.
@Html.EditorFor(model => model.TitlePercent.TitleName)
@Html.EditorFor(model => model.TitlePercent.Percentage)
@foreach titleMonthly in Model.MonthlyTitles {
@Html.EditorFor(model => titleMonthly.Month)
@Html.EditorFor(model => titleMonthly.Val)
}
Комментарии:
1. Привет BuildStarted: как я могу сопоставить это пользовательское представление? Я получаю нули, возвращающиеся из моего представления?