C# 从作为布局页面中的局部视图。MVC5

C# 从作为布局页面中的局部视图。MVC5,c#,model-view-controller,C#,Model View Controller,我的布局页面中有一个局部视图,其中包含一个表单。局部视图将作为弹出窗口打开。提交表单后,我必须返回到当前页面,打开弹出窗口,并显示一条成功消息,但我无法返回到正确的视图 我的布局页面 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>@ViewBag.Title || Midas WebS

我的
布局页面中有一个
局部视图
,其中包含一个表单。局部视图将作为
弹出窗口打开。提交表单后,我必须返回到当前页面,打开弹出窗口,并显示一条成功消息,但我无法返回到正确的视图

我的布局页面

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title || Midas WebSite</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/jqueryui")
    @Scripts.Render("~/bundles/site")
    @Scripts.Render("~/bundles/modernizr")

    <script type="text/javascript" language="javascript">
        /* Superior Web Systems */
        function displayHideBox(boxNumber) {

            if (document.getElementById("LightBox" + boxNumber).style.display == "none") {
                $("#LightBox" + boxNumber).fadeIn();
                $("#grayBG").fadeIn();
            } else {
                $("#LightBox" + boxNumber).fadeOut();
                $("#grayBG").fadeOut();
            }
        }
    </script>

</head>
<body>
    <div id="grayBG" class="grayBox" style="display:none;"></div>
    <div id="LightBox1" class="box_content" style="display:none;">
        <div onclick="displayHideBox('1'); return false;" class="close">X</div>
     @Html.Action("ActionToBindPartialView", "ControllerName")
</div>

 @RenderBody()
 @RenderSection("scripts", required: false)
 @Scripts.Render("~/bundles/jqueryval")
2

// My Code

return PartialView("MyPartialView", MyModel);
3

// My Code

return View();
4

// My Code

return ParialView();

我是一个初学者,无法发现我做错了什么。请建议我应该做些什么来使这项工作

很难说你做错了什么,因为我们讨论这个问题的工作空间有限。但是,以下是一个可能对您有所帮助的工作示例,请按照每个步骤进行操作:

  • bundles.Add(new ScriptBundle("~/bundles/jquery")
        .Include("~/Scripts/jquery-{version}.js"));
    
    bundles.Add(new ScriptBundle("~/bundles/jqueryval")
         .Include(
                    "~/Scripts/jquery.unobtrusive*",
                    "~/Scripts/jquery.validate*"));
    
  • 家庭控制器

    public ActionResult Index()
    {
        return View();
    }
    
    public PartialViewResult GetPartial()
    {
        return PartialView("_MyPartial");
    }
    
  • Index.cshtml

    <h2>Index</h2>
    
    <div id="divActions">
        @Ajax.ActionLink("Submit", "GetPartial", "Home", new AjaxOptions
         {
           HttpMethod = "POST",
           UpdateTargetId = "divActions",
           OnSuccess="onSuccess()"
         })
    </div>
    
    <script type="text/javascript">
        function onSuccess()
        {
            alert("Success!");
        }
    </script>
    
    索引
    @ActionLink(“提交”,“获取部分”,“主页”,新的AjaxOptions
    {
    HttpMethod=“POST”,
    UpdateTargetId=“divActions”,
    OnSuccess=“OnSuccess()”
    })
    函数onSuccess()
    {
    警惕(“成功!”);
    }
    
  • _MyPartial.cshtml

     <h2>_MyPartial</h2>
    
    \u MyPartial
    
  • _Layout.cshtml

    <!DOCTYPE html>
    <html>
    <head>
       <title>@ViewBag.Title</title>
        @Styles.Render("~/Content/css")
        @Scripts.Render("~/bundles/modernizr")
    </head>
    <body>
        @RenderBody()
    
        @Scripts.Render("~/bundles/jquery")
        @Scripts.Render("~/bundles/jqueryval")
        @RenderSection("scripts", required: false)
    </body>
    </html>
    
    
    @视图包。标题
    @style.Render(“~/Content/css”)
    @Scripts.Render(“~/bundles/modernizer”)
    @RenderBody()
    @Scripts.Render(“~/bundles/jquery”)
    @Scripts.Render(“~/bundles/jqueryval”)
    @RenderSection(“脚本”,必需:false)
    
  • 要确认页面源(在浏览器中)中呈现的脚本,请执行以下操作:

    
    
  • 正如你所看到的,没有什么困难。您只需要按照上面的步骤操作

    我希望有帮助


    提示:检查其他脚本错误,可能是显示弹出窗口的自定义代码导致了错误。仔细检查是否在局部视图中呈现javascript。考虑将它提取到常规视图。

    我想帮助你,但我不理解你的问题。你现在正在做什么?难道你没有错过“jQuery,不引人注目的Ajax,M.js”文件吗?几乎肯定你有脚本问题:(,可能是文件丢失、顺序错误,甚至是导致错误的另一个代码段。发布您的_Layout.cshtml代码和部分视图代码。并检查浏览器开发人员工具中的警告和/或错误:)还没有。请检查捆绑包是否已正确呈现。查看页面的源代码并检查错误放置的脚本。感谢您的帮助和时间,但根据我的要求,部分视图(包含我的表单)必须放置在_Layout.cshtml上,提交表单后,我必须返回。(无论我在哪个子页面上,它都应该返回该页面并显示部分视图。):(现在,我正在用您的代码替换我应用程序中与JQuery相关的代码,并将相应地更新您的代码。.希望这能起作用。.再次感谢:)好的,但是你说问题出在你单击“显示部分”时,而不是在你提交表单时。另外,你可以毫无问题地将代码移动到布局页面。我强烈建议你从上面的代码开始,用小步改进你的自定义代码/逻辑,这样你就可以很容易地隔离问题。可能是我无法解释n我的要求正确。布局页面中的部分视图。现在我通过重定向到Request.Url以显示所需的视图(return RedirectToAction(“..”+Url);),并在会话和jQuery的帮助下显示弹出窗口。但现在的问题是,如果验证失败,则视图无法跟踪,因为“RedirectToAction”。一个问题已解决,现在我无法处理验证。我正在网上搜索,一旦成功,将在此处更新。很抱歉延迟答复,现在项目已完成,我有机会将您的答复标记为答复:)…我卸载了jQuery软件包,删除了所有引用,清除了浏览器缓存,然后实现了您的解决方案,它成功了:)…再次感谢。
     <h2>_MyPartial</h2>
    
    <!DOCTYPE html>
    <html>
    <head>
       <title>@ViewBag.Title</title>
        @Styles.Render("~/Content/css")
        @Scripts.Render("~/bundles/modernizr")
    </head>
    <body>
        @RenderBody()
    
        @Scripts.Render("~/bundles/jquery")
        @Scripts.Render("~/bundles/jqueryval")
        @RenderSection("scripts", required: false)
    </body>
    </html>
    
     <script src="/Scripts/jquery-1.8.2.js"></script>
     <script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
     <script src="/Scripts/jquery.validate.js"></script>
     <script src="/Scripts/jquery.validate.unobtrusive.js"></script>