Я просмотрел различные учебники, но я очень смущен тем, как я хочу заниматься тем, что имею в виду, и хочу помочь прояснить мои мысли.Настройка страницы просмотра бритвы с несколькими разделами
У меня будет страница просмотра бритвы под названием Profile
; на этой странице профиля У меня есть четыре раздела:
- изменения пароля
- Настройка пароля
- Имя пользователя
- Биография.
Я думал о создании каждого из четырех разделов как частичный раздел, и каждый раздел будет иметь текстовые поля и кнопку сохранения, которые позволят пользователю добавлять или изменять информацию.
@model Projects.Models.PasswordModel
@{
ViewBag.Title = "Profile Account";
}
<hgroup class="title">
<h1>@ViewBag.Title.</h1>
</hgroup>
<p class="message-success">@ViewBag.StatusMessage</p>
<div id="wrap">
<div id="right">
@if (ViewBag.HasLocalPassword)
{
@Html.Partial("_ChangePasswordPartial")
}
else
{
@Html.Partial("_SetPasswordPartial")
}
</div>
<div id="left">
@Html.Partial("_UserNamePartial")
@Html.Partial("_BiographyPartial")
</div>
</div>
Как правильно настроить основную страницу просмотра и правильно ли отобразить и функционировать четыре раздела? Я получил их для отображения, но когда я попытаюсь сохранить изменения, которые я сделал для имени пользователя, я бы получил ошибку для другой модели - скажем, модель биографии. Я чувствую, что они связаны, когда они не должны. Я действительно ищу ясный учебник о том, как это сделать, и, надеюсь, я смогу сделать это после того, как я это выясню.
Это мое имя пользователя парциальное
@model Project.Models.UsernameModel
@using (Html.BeginForm("_UsernamePartial", "Account")) {
@Html.AntiForgeryToken()
@Html.ValidationSummary()
<p>Username</p>
@Html.TextBoxFor(m=>m.Username)
<button class="btn btn-small" type="submit" value="Save Username">Save</button>
}
Мой контроллер
GET:
public ActionResult _UsernamePartial()
{
var usernameModel = new UsernameModel();
using (var db = new DataContext())
{
usernameModel.Nickname = (from u in db.Users
where u.ID == WebSecurity.CurrentUserId
select u.Username).FirstOrDefault();
}
return View(usernameModel);
}
POST:
[HttpPost]
public ActionResult _UsernamePartial(UsernameModel usernameModel, string returnUrl)
{
if (ModelState.IsValid)
{
using (var db = new DataContext())
{
User user = db.Users.FirstOrDefault(m => m.ID == WebSecurity.CurrentUserId);
user.Username = usernameModel.Username;
db.SaveChanges();
}
return RedirectToAction("_UsernamePartial");
}
return View(returnUrl);
}
Ваш помощь очень ценится.
У Вас есть различные модели для каждого раздела? Ваше мнение строго типизировано в PasswordModel, которое появляется отдельно от указанной вами биографической модели. Если вы собираетесь это сделать, вам понадобится модель, состоящая из моделей для каждого раздела. – JeffB
@JeffB что-то вроде этого может быть: 'public class AccountManageModel { public LocalPasswordModel PasswordModel {get; задавать; } public NicknameModel UsernameModel {get; задавать; } public ProgramNameModel biographyModel {get; задавать; } } 'и каждый будет своим классом? – 072et
Да, что-то в этом роде. Затем вы можете передать каждый в соответствующий частичный вид. – JeffB