部分页面的Asp.MVC RenderAction无法正常工作

时间:2011-09-11 22:18:43

标签: asp.net-mvc asp.net-ajax

好的,我的页面非常糟糕,我需要很好的帮助 我有一个登录页面,其中包含登录和注册部分视图 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);
            }
        }

enter image description here

1 个答案:

答案 0 :(得分:1)

我怀疑您忘记在主视图中包含以下脚本:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>

这使得Ajax.BeginFormAjax.ActionLink等Html帮助程序执行AJAX请求而不是正常的。

您还可以查看following article,其中详细介绍了这些帮助程序如何在ASP.NET MVC 3中运行。