Как повторно использовать частичный вид или шаблоны одного приложения MVC в другое приложение MVC. Я создал два приложения MVC в одном решении. Приложения - DemoVirtualPathProvider и SimpleMVCApp. Я добавил один дополнительный частичный вид в SimpleMVCapp под названием _samplepartialview.cshtml. Теперь я хочу использовать этот частичный вид внутри приложения DemoVirtualPathProvider. Так может кто-нибудь помочь мне решить это. Заранее спасибо.Как повторно использовать частичный вид приложения One MVC в другое приложение MVC
Это то, что я пробовал. Я добавил EmbeddedVirtualFile класс
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Web;
using System.Web.Hosting;
namespace DemoVirtualPathProvider.Models
{
public class EmbeddedVirtualFile : VirtualFile
{
private readonly string virtualPath;
private readonly Assembly assembly;
public EmbeddedVirtualFile(string virtualPath) : base(virtualPath)
{
this.assembly = this.GetType().Assembly;
this.virtualPath = VirtualPathUtility.ToAppRelative(virtualPath);
}
public override System.IO.Stream Open()
{
var resourceName = this.GetType().Namespace + "." + virtualPath.Replace("~/", "").Replace("/", ".");
return assembly.GetManifestResourceStream(resourceName);
}
}
}
Это код класса EmbeddedVirtualPathProvider
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Web;
using System.Web.Hosting;
namespace DemoVirtualPathProvider.Models
{
public class EmbeddedVirtualPathProvider : VirtualPathProvider
{
private readonly Assembly assembly = typeof(EmbeddedVirtualPathProvider).Assembly;
private readonly string[] resourceNames;
public EmbeddedVirtualPathProvider()
{
this.resourceNames = assembly.GetManifestResourceNames();
}
private bool IsEmbeddedResourcePath(string virtualPath)
{
var checkpath = VirtualPathUtility.ToAppRelative(virtualPath);
var resourceName = this.GetType().Namespace + "." + checkpath.Replace("~/", "").Replace("/",".");
return this.resourceNames.Contains(resourceName);
}
public bool IsFileExists(string virtualPath)
{
return IsEmbeddedResourcePath(virtualPath) || base.FileExists(virtualPath);
}
public override VirtualFile GetFile(string virtualPath)
{
if (IsEmbeddedResourcePath(virtualPath))
return new EmbeddedVirtualFile(virtualPath);
return base.GetFile(virtualPath);
}
public override System.Web.Caching.CacheDependency GetCacheDependency(string virtualPath, System.Collections.IEnumerable virtualPathDependencies, DateTime utcStart)
{
if (IsEmbeddedResourcePath(virtualPath))
return null;
return base.GetCacheDependency(virtualPath, virtualPathDependencies, utcStart);
}
}
}
Это моя _layout.cshtml страница DemoVirtualPathProvider Применение
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>@ViewBag.Title - My ASP.NET MVC Application</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<meta name="viewport" content="width=device-width" />
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
<header>
<div class="content-wrapper">
<div class="float-left">
<p class="site-title">@Html.ActionLink("your logo here", "Index", "Home")</p>
</div>
<div class="float-right">
<section id="login">
@Html.Partial("_LoginPartial")
@Html.Partial("_SimplePartialView")
</section>
<nav>
<ul id="menu">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home") </li>
</ul>
</nav>
</div>
</div>
</header>
<div id="body">
@RenderSection("featured", required: false)
<section class="content-wrapper main-content clear-fix">
@RenderBody()
</section>
</div>
<footer>
<div class="content-wrapper">
<div class="float-left">
<p>© @DateTime.Now.Year - My ASP.NET MVC Application</p>
</div>
</div>
</footer>
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
</body>
</html>
Вы можете предоставить образец кода для этого г-на @ Криса Пратта. – sadanand
Проверьте документацию. Они рассказывают вам все, что вам нужно сделать, чтобы встать и бежать. –