我仍然是ASP.Net MVC的新手,所以这可能是一个愚蠢的问题.
我正在使用带有剃刀语法的MVC 3.
我的问题是,如何在成功发布后显示一些HTML?
我有一个密码恢复页面,在发布正确的信息后,我希望它再次显示视图,但添加一个"新密码已发送到您的电子邮件地址".
在WebForms中,我只有一个不可见的面板并显示它,或文字并在回发时填充一些文本.我在MVC做什么?
我想我可以为它添加一个不同的视图,但这看起来有点像矫枉过正 - 或者我是否误解了MVC范式?
编辑:
我尝试使用强类型模型,但它不起作用:-(
我的观点(简化了一下):
@model BudgetPal.Model.MVC.Account.EditModel
@if (Model.ShowConfirmation)
{
<div class="confirmation">Your profile has been saved.</div>
}
Run Code Online (Sandbox Code Playgroud)
该模型:
public class RecoverPasswordModel
{
[Required]
[Display(Name = "E-mail")]
[StringLength(250)]
[RegularExpression(@"([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})", ErrorMessage = "Not a valid e-mail address")]
public string Email { get; set; }
public bool ShowConfirmation { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
而我的控制器:
public ActionResult Edit()
{
EditModel model = new EditModel(UserSession.User);
return View(model);
}
[HttpPost]
public ActionResult Edit(EditModel model)
{
if (!ModelState.IsValid)
return View(model);
// Save changes here
model.ShowConfirmation = true;
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
您无需添加单独的视图.快速解决方案是在动态ViewBag对象上设置属性并检查其在视图中的存在.
在您的控制器中,设置动态ViewBag属性...
ViewBag.Message = "A new password has been sent to your email address.";
Run Code Online (Sandbox Code Playgroud)
在你看来,像......
@if(ViewBag.Message != null) {
<div class="message">@ViewBag.Message</div>
}
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到更多信息.
如果使用强类型视图,则只需向视图模型对象添加一个属性即可存储消息,并以检查动态ViewBag属性的方式检查它,以确定是否显示消息.
| 归档时间: |
|
| 查看次数: |
2560 次 |
| 最近记录: |