Хотя я считаю, что все модели определены и, надеюсь, прошли правильно, но я получаю сообщение об ошибке, в котором говорится, что я прохожу в одной модели, когда ей требуется другая модель.Передача нескольких моделей в одном представлении
Главная Вид:
@model Project.Models.ProfileModel
@(ViewBag.HasLocalPassword ? Html.Partial("_ChangePasswordPartial", Model.PasswordModel) : Html.Partial("_SetPasswordPartial", Model.PasswordModel))
@Html.Partial("_UsernamePartial", Model.UsernameModel)
@Html.Partial("_PlayNamePartial", Model.PlayNameModel)
Модели:
public class ProfileModel
{
public PasswordModel PasswordModel { get; set; }
public PlayNameModel PlayNameModel { get; set; }
public UsernameModel UsernameModel { get; set; }
}
UserName Действие GET:
public ActionResult _UsernamePartial()
{
var usernameModel = new UsernameModel();
using (var db = new DataContext())
{
usernameModel.Username =
(from u in db.Users where u.ID == WebSecurity.CurrentUserId select u.Username).FirstOrDefault();
}
return PartialView(usernameModel);
}
UserName POST Действие:
[HttpPost]
public ActionResult _UsernamePartial(UsernameModel usernameModel)
{
if (ModelState.IsValid)
{
using (var db = new DataContext())
{
User user = db.Users.FirstOrDefault(u => u.ID == WebSecurity.CurrentUserId);
user.Username = usernameModel.Username;
db.SaveChanges();
}
}
return View("_UsernamePartial");
}
Профиль Действие:
public ActionResult Profile(ManageMessageId? message)
{
var profile = New ProfileModel();
ViewBag.StatusMessage =
message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
: message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
: message == ManageMessageId.RemoveLoginSuccess ? "The external login was removed."
: "";
ViewBag.HasLocalPassword = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));
ViewBag.ReturnUrl = Url.Action("Profile");
return View(profile);
}
Просмотр Страница UserName:
@model Acatar.Models.UsernameModel
@using (Html.BeginForm("_UsernamePartial", "Account")) {
<p id="legend">Username</p>
@Html.TextBoxFor(m=>m.Username)
<button type="submit" value=" Username">Save</button>
}
Сообщение об ошибке:The model item passed into the dictionary is of type 'Project.Models.ProfileModel', but this dictionary requires a model item of type 'Project.Models.UsernameModel'.
бы очень признателен за любую помощь, где я буду неправильно.
на какую страницу просмотра вы действительно видите эту ошибку? – bot
@bot на главной странице просмотра - первый раздел кода, который у меня есть. Должен ли я передавать все GETS для трех моделей в один метод GET на странице профиля? – BB987
@ BB987, нет, вам не нужно публиковать сообщения всех пользователей на той же странице. интересно, у вас есть дочерний метод для _UsernamePartial, который никогда не используется. не связанные с вашей проблемой, но интересные –