好的,我的页面非常糟糕,我需要很好的帮助 我有一个登录页面,其中包含登录和注册部分视图 RegisterView有它自己的ViewModel类,它让我有问题 我使用“RenderAction”助手渲染注册局部视图 最大的问题是验证。当我没有在注册字段中输入任何内容并单击提交寄存器时,部分视图不会在它的parrent LoginView中更新,但只返回RegisterView。换句话说,我的验证工作,但不是我希望它工作的地方 LogOn.cshtml(这个包含寄存器局部视图)
<div id="regstrationForm">
@{Html.RenderAction("RegisterUser", "Account");}
</div>
注册(部分视图)
@using (@Ajax.BeginForm("RegisterUser", "Account", new AjaxOptions { UpdateTargetId = "reg" }))
{
<table id="reg">
...
<tr>
<td>
@Html.TextBoxFor(u => u.Username, new { @class = "registrationTextFields", placeholder = "Email" })
</td>
</tr>
<tr>
<td>
@Html.TextBoxFor(p => p.Password, new { @class = "registrationTextFields", placeholder = "Password" })
</td>
</tr>
<tr>
<td align="right">
<input class="signUpButton" type="submit" value="Sign up" />
</td>
</tr>
<tr>
<td>
@Html.ValidationMessage("myerrorsummary")
</td>
</tr>
</table>
当用户点击注册按钮时,这是HttpPost控制器方法 在这里,我尝试返回“PartialView()”,它将我的输入字段转换为红色css样式,但不显示那些字段旁边的验证信息。
[HttpPost]
public ActionResult RegisterUser(RegisterViewModel logOnViewModel)
{
if (ModelState.IsValid)
{
MembershipCreateStatus result;
try
{
...
}
else
{
ModelState.AddModelError("myerrorsummary", "The input is not valid");
ViewBag.CountryList = countryRepository.GetAllCountries();
ViewBag.CityList = cityRepository.GetAllCitiesByCountryId(1);
return View(logOnViewModel);
}
}
答案 0 :(得分:1)
我怀疑您忘记在主视图中包含以下脚本:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
这使得Ajax.BeginForm
和Ajax.ActionLink
等Html帮助程序执行AJAX请求而不是正常的。
您还可以查看following article,其中详细介绍了这些帮助程序如何在ASP.NET MVC 3中运行。