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>