我浏览了各种教程,但我对如何执行我的想法感到非常困惑,并希望得到一些帮助来澄清我的想法。
我将有一个名为的剃须刀视图页面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>
}
我的控制器
得到:
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);
}
邮政:
[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);
}
非常感谢您的帮助。