asp.net-mvc – ASP.net MVC3 – 使用Ajax回发的Razor Views和PartialViews

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – ASP.net MVC3 – 使用Ajax回发的Razor Views和PartialViews前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直非常失败,让这个工作!

在一个视图…

@model Project.Models.Account.ForgotPasswordModel

@{
    ViewBag.Title = "Forgot Password";
}

<h2>ForgotPassword</h2>

<span id='@ViewBag.ReplaceID'>
    @Html.Partial("_ForgotPasswordUserNameAjax",ViewData.Model)
</span>

我渲染这个partialView …

@model Project.Models.Account.ForgotPasswordModel

@{
    this.Layout = null;
}

@using (Ajax.BeginForm("ForgotPassword",new AjaxOptions() { UpdateTargetId = ViewBag.ReplaceID,InsertionMode = InsertionMode.InsertAfter }))
{
    @Html.ValidationSummary(true,"Forgot Password was unsuccessful. Please correct the errors and try again.")
    <div id="login" class="Box">
            <fieldset>
            <h2>Account Information</h2>
            <div class="inside">
                <div class="editor-label">
                    @Html.LabelFor(m => m.Username)
                </div>
                <div class="editor-field">
                    @Html.TextBoxFor(m => m.Username)
                    <br />
                    @Html.ValidationMessageFor(m => m.Username)
                    <br />
                </div>

                <p>
                    <input type="submit" value='Submit' />
                </p>
            </div>
        </fieldset>
    </div>   
}

而这个控制器的动作…

[HttpPost]
        public PartialViewResult ForgotPassword(ForgotPasswordModel model)
        {

            if (String.IsNullOrEmpty(model.Username))
            {
                ModelState.AddModelError("Username",ForgotPasswordStrings.USER_NAME_required);
            }
            else
            {
                bool isGood = false;
                model.Question = this._security.ValidateUserNameGetSecurityQuestion(model.Username,out isGood);

                if (!isGood)
                {
                    ModelState.AddModelError("Username",ForgotPasswordStrings.USER_NAME_INVALID);
                }

            }
            PartialViewResult retVal = null;
            if (ModelState.IsValid)
            {

                retVal = PartialView("ForgotPasswordAnswerAjax",model);
            }
            else
            {
                retVal = PartialView("_ForgotPasswordUserNameAjax",model);
            }

            return retVal;

        }

然而,每一次,视图只返回PartialView,而不是包含在布局中(所以只是我的PartialView在屏幕上,没有其他的).我尝试了一些我在网上找到的东西…
http://www.compiledthoughts.com/2011/01/aspnet-mvc-razor-partial-views-with.html
https://stackoverflow.com/questions/4655365/mvc3-submit-ajax-form

但没有什么可以解决这个问题.我已经将InsertionMode更改为所有值,而不改变.我已将@ Html.Partial更改为一个代码
@ {
Html.RenderPartial(“_ ForgotPasswordUserNameAjax”,ViewData.Model);
}.

这不行

我的想法(和耐心)用完了!

请帮忙!

解决方法

编辑
PEBKAC.

我忘了升级项目时,我添加了新的jquery.unobtrusive-ajax.js文件,但从未将它们包含在_Layout.cshtml页面中.补充该库修复问题.对不起大家!

原文
我开始认为这是一个错误.再次将未转换的项目(MVC2)转换为MVC3.我以aspx / ascx格式离开所有原始页面并运行该项目.我试过页面.同样的问题仍然存在.回到MVC2,它工作正常.再次尝试MVC3,再次发生问题.

我使用与这个非常相似的页面来转换项目

http://mattsieker.com/index.php/2010/11/21/converting-asp-net-mvc2-project-to-mvc3/

猜你在找的asp.Net相关文章