#asp.net-mvc-3 #partial-views
#asp.net-mvc-3 #частичные представления
Вопрос:
Перегрузка для @Html.Partial принимает модель, поэтому в «первичном» представлении я помещаю this.model:
@Html.Partial("_GenericIndex", this.Model )
Я попытался просто поместить @Model в частичное представление, чтобы посмотреть, появилось ли что-нибудь, но я ничего не получил.
Итак, как мне использовать это.Параметр модели в частичном представлении? Я видел несколько ужасных решений, в которых она была подготовлена специально для частичного представления в viewdata или что-то в этом роде. Конечно, в этом нет необходимости?
Я просто хочу получить доступ к аргументу Html.Partial, который я ввожу в него.
Кстати, мой контроллер и действие такие:
public class TestController : Controller
{
IRepository<Customer> customerrepo = RepositoryFactory.GetRepository<Customer>();
//
// GET: /Test/
public ActionResult Index()
{
Customer cust = customerrepo.GetByID("1");
return View(cust);
}
}
Комментарии:
1. Аргумент, мне не помогло в этом тесте то, что все это время в базе данных не было клиента с идентификатором «1»…
2. Спасибо, люди, теперь я лучше понимаю систему. Поскольку я пытаюсь создать общий вид, я закончил тем, что использовал ViewBag для динамической передачи модели. Я также добавил modelmetadata выбранной модели в ViewBag, вызвав это в моем общем действии контроллера: ModelMetadata entitymetadata = ModelMetadataProviders.Current. GetMetadataForType(() => item, typeof(T));
3. Обновление: я переключаюсь на использование динамической модели, чтобы работать над созданием общего представления: IList<T> список = репозиторий. GetAll(); динамическая модель = список; возвращает представление (модель);
Ответ №1:
Просто эта строка вверху вашего частичного представления:
@model Customer
Затем вы можете использовать @Model
в своем частичном представлении, и оно будет представлять объект, который вы передали в своем @Html.Partial("_GenericIndex", Model)
вызове.
даже вы можете вызвать @Html.Partial(«_GenericIndex»), который передаст модель текущей страницы на частичную страницу.
Ответ №2:
Вы установили тип модели в своем частичном представлении?
@{
var model = ViewContext.Controller.ViewData.Model as Customer;
}
Комментарии:
1. Все еще пытаюсь, но этот подход может быть хорош, потому что я пытаюсь создать общий частичный.