Как передать модель (и все остальное) из представления в частичное представление

#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. Все еще пытаюсь, но этот подход может быть хорош, потому что я пытаюсь создать общий частичный.