Вы должны посмотреть на этот предыдущий вопрос , который похож на ваш.
Вы должны иметь регистрацию и информацию о пользователе в одной модели для вашей страницы.(Таким образом, ответ на ваш вопрос состоит в том, что ваша страница имеет только одну модель. Но ваша модель может состоять из других объектов - по одному для каждого частичного представления.)
Итак, как вы видите в ссылке,пользователь имел частичные представления, которые используют только те объекты в модели страницы, которая к нему относится.
Я думаю, что это должно помочь вам.Надеюсь это поможет!Удачи.
ОБНОВЛЕНИЕ : Извините за задержку, но вот пример (много кода), который может помочь:
Модель : Iсоздайте модель абстрактного представления, в которой всегда есть данные reg и user.Модель каждой страницы может наследоваться от этого резюме.
public class Registration
{
public string UserName { get; set; }
public string Password { get; set; }
}
public class UserData
{
public string DisplayName { get; set; }
public int Age { get; set; }
}
public abstract class RegModelViewModelBase
{
public string Title { get; set; }
public Registration RegInfo { get; set; }
public UserData UserInfo { get; set; }
}
public class MainPageViewModel : RegModelViewModelBase
{
}
Контроллер : Здесь я просто создаю конкретную модель представления для этой страницы / представления (MainPageViewModel).Я устанавливаю свойства (которые могут исходить из базы данных и т. Д.).Я передаю модель представления в представление.
public class HomeController : Controller
{
public ActionResult Index()
{
MainPageViewModel hpvm = new MainPageViewModel();
hpvm.Title = "Some Cool Page";
hpvm.RegInfo = new Registration() { Password = "blah", UserName = "dhoerster" };
hpvm.UserInfo = new UserData() { DisplayName = "David Hoerster", Age = 125 };
return View(hpvm);
}
}
View - _Layout.cshtml: обратите внимание, что первая строка в моей модели устанавливает объект модели для моего шаблона _layout.Я получаю эту модель представления из контроллера и могу ссылаться на нее в _layout (или другом шаблоне).Здесь я ничего не делаю, за исключением получения частичного представления (_RegStuff) и передачи ему моего RegInfo из моей модели (которая была установлена в контроллере):
@model MvcApplication1.Models.RegModelViewModelBase
<!DOCTYPE html>
<html>
<head>
<title>@Model.Title</title>
</head>
<body>
@Html.Partial("_RegStuff", Model.RegInfo)
@RenderBody()
</body>
</html>
View - _RegInfo.cshtml: Грязь простая, но опять же я установил тип модели, в которой ожидается частичное представление.
@model MvcApplication1.Models.Registration
<div>User Name = @Model.UserName</div>
Представление - Index.cshtml: сноваустановите модель и используйте ее в моем индексном представлении.
@model MvcApplication1.Models.MainPageViewModel
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>@Model.Title</h2>
<h3>Display Name = @Model.UserInfo.DisplayName</h3>
Итак, я могу ссылаться на набор моделей в моем контроллере.
Надеюсь, это объясняет, к чему я стремился,Если нет, я могу обновить это соответственно.
Спасибо!