Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.net MVC3-带有Ajax回发的Razor视图和PartialView_Asp.net Mvc_Asp.net Mvc 3_Razor - Fatal编程技术网

Asp.net mvc ASP.net MVC3-带有Ajax回发的Razor视图和PartialView

Asp.net mvc ASP.net MVC3-带有Ajax回发的Razor视图和PartialView,asp.net-mvc,asp.net-mvc-3,razor,Asp.net Mvc,Asp.net Mvc 3,Razor,我一直很不成功,让这个工作 从某种角度来看 @model Project.Models.Account.ForgotPasswordModel @{ ViewBag.Title = "Forgot Password"; } <h2>ForgotPassword</h2> <span id='@ViewBag.ReplaceID'> @Html.Partial("_ForgotPasswordUserNameAjax", ViewData.

我一直很不成功,让这个工作

从某种角度来看

@model Project.Models.Account.ForgotPasswordModel

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

<h2>ForgotPassword</h2>

<span id='@ViewBag.ReplaceID'>
    @Html.Partial("_ForgotPasswordUserNameAjax", ViewData.Model)
</span>
然而,每一次,视图都只返回PartialView,而不包含在布局中。(所以只有我的PartialView在屏幕上。没有其他内容。)我尝试了一些我在网上找到的东西。。。 http://stackoverflow.com/questions/4655365/mvc3-submit-ajax-form

但没有任何东西能解决这个问题。我已经将InsertionMode更改为所有值,没有任何更改。我已将@Html.Partial更改为如下代码块 @{ RenderPartial(“\u ForgotPasswordUserNameAjax”,ViewData.Model); }

那不行

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

请帮忙

我认为“主”视图也被称为ForgotPassword,就像部分视图一样

由于控制器仅返回PartialViewResult,因此不使用布局

为父视图和ajax调用创建不同的操作。

编辑 佩布卡克

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

原职 我开始认为这是一个错误。再次获取未转换的项目(MVC2)并将其转换为MVC3。我将所有原始页面保留为aspx/ascx格式,然后运行该项目。我试过了。同样的问题仍然存在。回到MVC2,它工作正常。再次尝试MVC3,问题再次出现

我使用与此非常类似的页面转换了项目


由于您只返回部分视图,因此只需处理部分视图。由于Razor视图的处理方式,MVC3更严格地遵守了此功能

只需将控制器操作更改为以下内容:

[HttpPost]
        public ActionResult 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 = View("ForgotPasswordAnswerAjax", model);
            }
            else
            {
                retVal = PartialView("_ForgotPasswordUserNameAjax", model);
            }

            return retVal;

        }

嗯,除了将视图更改为Razor之外,我正在将这个项目从MVC2应用程序转换为MVC3。在切换到MVC3之前,这些都工作得非常好。我原以为不必更改控制器代码(除了带下划线的视图的新命名):(虽然这让我获得了更多的格式设置,但我完全忽略了部分视图的父视图中的所有内容。诚然,这并不多,但如果有其他包含更多内容的页面,我不得不将其放在部分视图中??那么部分视图有什么用呢?
[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;

        }
[HttpPost]
        public ActionResult 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 = View("ForgotPasswordAnswerAjax", model);
            }
            else
            {
                retVal = PartialView("_ForgotPasswordUserNameAjax", model);
            }

            return retVal;

        }