C# 渲染局部视图时,它不会在具有实体框架的MVC中的父视图内部打开
我刚刚开始使用Mvc框架,我想显示包含产品详细信息的部分视图。主视图包含用户将单击的产品名称,产品的详细信息将列在同一页面上,但我的部分视图将在新页面上打开,第一次加载页面时,默认情况下会显示第一个产品详细信息,我已经尝试了很多并看到了其他链接,但这个问题仍然存在。。请帮忙解决这个问题。下面列出了我正在使用的完整代码 HomeController.csC# 渲染局部视图时,它不会在具有实体框架的MVC中的父视图内部打开,c#,asp.net,asp.net-mvc,entity-framework,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Entity Framework,Asp.net Mvc 4,我刚刚开始使用Mvc框架,我想显示包含产品详细信息的部分视图。主视图包含用户将单击的产品名称,产品的详细信息将列在同一页面上,但我的部分视图将在新页面上打开,第一次加载页面时,默认情况下会显示第一个产品详细信息,我已经尝试了很多并看到了其他链接,但这个问题仍然存在。。请帮忙解决这个问题。下面列出了我正在使用的完整代码 HomeController.cs using System; using System.Collections.Generic; using System.Linq; using
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using MvcFirstMVCApp.Models;
namespace MvcFirstMVCApp.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
AuthorContactEntities dbEntities = new AuthorContactEntities();
public ActionResult Index()
{
return View(dbEntities.tbl_product.ToList());
}
public ActionResult PartialView(int id)
{
var query = dbEntities.tbl_product.First(c => c.ProductId == id);
return PartialView("PartialView", query);
}
}
}
Index.cshtml
@model List<MvcFirstMVCApp.Models.tbl_product>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<script src="@Url.Content("~/Scripts/jquery-1.5.1.js")" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$("div.product a").click(function (e) {
alert("clicked");
var url = this.ref;
$get(url, {}, function (data) {
$('div.productdetail').html(data);
});
});
return false;
});
</script>
</head>
<body>
<div class="product">
<ul class="list">
@foreach (var item in Model)
{
<li><a href="@Url.Action("PartialView", "Home", new { id = item.ProductId })">
@item.ProductName</a></li>
}
</ul>
<div class="productdetail">
@{Html.RenderPartial("PartialView",Model.FirstOrDefault());}
</div>
</div>
</body>
</html>
这是预期的行为 您正在此处呈现指向操作方法的链接:
<li><a href="@Url.Action("PartialView", "Home", new { id = item.ProductId })">
@item.ProductName</a></li>
单击该按钮将使浏览器导航到您的操作方法,该方法将返回局部视图。该局部视图没有布局。您的视图似乎也没有布局
这听起来很刺耳。。但是您应该重新访问您的MVC资源,重新阅读部分视图是如何工作的。它们不是神奇的动态加载视图。。如果这是您想要的,您需要研究AJAX
$("div.product a").click(function (e) {
var url = this.ref;
$get(url, {}, function (data) {
$('div.productdetail').html(data);
});
// Return here to prevent click event from opening new page
return false;
});
通过单击锚定标记,您将打开一个新页面,该页面将呈现您的局部视图。您需要防止锚点的默认行为
您可以添加返回false代码>来做这件事。调用e.preventDefault();在onclick处理程序中:
$("div.product a").click(function (e) {
e.preventDefault();
alert("clicked");
var url = this.ref;
$get(url, {}, function (data) {
$('div.productdetail').html(data);
});
});
请看这篇文章。按照建议,在_布局中添加一行代码,为我解决了这个问题
Post:我添加了return false,但它仍然重定向到一个单独的部分视图页面。使用e.preventDefault()不会显示产品详细信息,也不会重定向到另一个页面。请给我此类问题或教程的链接。。。谢谢你的回答
$("div.product a").click(function (e) {
var url = this.ref;
$get(url, {}, function (data) {
$('div.productdetail').html(data);
});
// Return here to prevent click event from opening new page
return false;
});
$("div.product a").click(function (e) {
e.preventDefault();
alert("clicked");
var url = this.ref;
$get(url, {}, function (data) {
$('div.productdetail').html(data);
});
});