0
我,而不是返回的HTML文本模板MVC 4更改密码图:Razor视图渲染为文本
密码查看:
@model Heelp.ViewModels.LocalPasswordViewModel
<p>@ViewBag.StatusMessage</p>
@if(Model.HasLocalPassword)
{
@Html.Partial(MVC.Account.Views._ChangePasswordPartial)
}
else
{
@Html.Partial(MVC.Account.Views._SetPasswordPartial)
}
而且ChangePartial查看:
@model Heelp.ViewModels.LocalPasswordViewModel
@if (!String.IsNullOrEmpty(Model.Result))
{
<div class="result">
@Model.Result
</div>
}
@if (!Model.ChangePasswordSucceeded)
{
using (Html.BeginForm(MVC.Account.Password()))
{
@Html.AntiForgeryToken()
@Html.LabelFor(m => m.OldPassword)
@Html.PasswordFor(m => m.OldPassword)
@Html.ValidationMessageFor(m => m.OldPassword)
<br />
@Html.LabelFor(m => m.NewPassword)
@Html.PasswordFor(m => m.NewPassword)
@Html.ValidationMessageFor(m => m.NewPassword)
<br />
@Html.LabelFor(m => m.ConfirmPassword)
@Html.PasswordFor(m => m.ConfirmPassword)
@Html.ValidationMessageFor(m => m.ConfirmPassword)
<br />
<input type="submit" value="@HeelpResources.ChangePasswordPartialSubmitButtonLabel" />
}
}
而且最后控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public virtual ActionResult Password(LocalPasswordViewModel model)
{
// Has this information is lost in the roundtrip between the Controller and the Action, we need to get this information again
model.HasLocalPassword = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));
if (model.HasLocalPassword)
{
if (ModelState.IsValid)
{
// It's a local account so update the new password
model.ChangePasswordSucceeded = WebSecurity.ChangePassword(User.Identity.Name, model.OldPassword, model.NewPassword);
}
// Send back to the View the results of the operation
model.Result = model.ChangePasswordSucceeded ? HeelpResources.AccountManagePasswordChangeSucessMsg : HeelpResources.AccountManagePasswordChangeErrorMsg;
return View(model);
}
else
{
try
{
// It's not a local account so create the account based on the external information and the password
WebSecurity.CreateAccount(User.Identity.Name, model.NewPassword);
model.ChangePasswordSucceeded = true;
}
catch (Exception)
{
model.ChangePasswordSucceeded = false;
}
// User does not have a local password so remove any validation errors caused by a missing OldPassword field
ModelState state = ModelState["OldPassword"];
if (state != null)
{
state.Errors.Clear();
}
// Send back to the View the results of the operation
model.Result = model.ChangePasswordSucceeded ? HeelpResources.AccountManagePasswordSetSucessMsg : HeelpResources.AccountManagePasswordSetErrorMsg;
}
return View(model);
}
当我提交密码更改表单我得到文本格式的网页:文本页
任何想法,为什么会出现这种情况的
< !DOCTYPE html >
< html xmlns="http://www.w3.org/1999/xhtml" >
<head>
< meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
< title>izigo | tudo fica mais fácil</title>
< meta name="viewport" content="width=960, user-scalable=yes"/>
// REST?
谢谢。
您或者需要使用'@ Html.Raw(Html.Partial(“MyPartial”))''或'@ {Html.RenderPartial(“MyPartial”); }'。当你没有真正想把偏好作为一个字符串的时候,那么'RenderPartial'是首选的,因为默认的行为是将渲染后的输出原样转储到页面。 – 2013-03-25 19:53:26
+1另一个选择是用这种'
这样的HTML元素包装你的'部分'方法嗨,谢谢,但它仍然无法正常工作。它第一次呈现表单,没关系,但提交表单后,结果是Text中的HTML页面(Chrome控制台称它是application/json ?!)。 – Patrick 2013-03-27 11:22:26