آغاز به کار با Twitter Bootstrap در ASP.NET MVC
نویسنده: وحید نصیری
تاریخ: ۱۳۹۲/۰۳/۱۴ ۱۲:۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
PM> Install-Package Twitter.BootstrapRTL
PM> Install-Package Microsoft.AspNet.Web.Optimization
using System.Collections.Generic;
using System.IO;
using System.Web;
using System.Web.Optimization;
namespace Mvc4TwitterBootStrapTest.Helper
{
/// <summary>
/// A custom bundle orderer (IBundleOrderer) that will ensure bundles are
/// included in the order you register them.
/// </summary>
public class AsIsBundleOrderer : IBundleOrderer
{
public IEnumerable<FileInfo> OrderFiles(BundleContext context, IEnumerable<FileInfo> files)
{
return files;
}
}
public static class BundleConfig
{
private static void addBundle(string virtualPath, bool isCss, params string[] files)
{
BundleTable.EnableOptimizations = true;
var existing = BundleTable.Bundles.GetBundleFor(virtualPath);
if (existing != null)
return;
Bundle newBundle;
if (HttpContext.Current.IsDebuggingEnabled)
{
newBundle = new Bundle(virtualPath);
}
else
{
newBundle = isCss ? new Bundle(virtualPath, new CssMinify()) : new Bundle(virtualPath, new JsMinify());
}
newBundle.Orderer = new AsIsBundleOrderer();
foreach (var file in files)
newBundle.Include(file);
BundleTable.Bundles.Add(newBundle);
}
public static IHtmlString AddScripts(string virtualPath, params string[] files)
{
addBundle(virtualPath, false, files);
return Scripts.Render(virtualPath);
}
public static IHtmlString AddStyles(string virtualPath, params string[] files)
{
addBundle(virtualPath, true, files);
return Styles.Render(virtualPath);
}
public static IHtmlString AddScriptUrl(string virtualPath, params string[] files)
{
addBundle(virtualPath, false, files);
return Scripts.Url(virtualPath);
}
public static IHtmlString AddStyleUrl(string virtualPath, params string[] files)
{
addBundle(virtualPath, true, files);
return Styles.Url(virtualPath);
}
}
}@using Mvc4TwitterBootStrapTest.Helper
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
@BundleConfig.AddStyles("~/Content/css",
"~/Content/bootstrap.css",
"~/Content/bootstrap-responsive.css",
"~/Content/Site.css"
)
@BundleConfig.AddScripts("~/Scripts/js",
"~/Scripts/jquery-1.9.1.min.js",
"~/Scripts/jquery.validate.min.js",
"~/Scripts/jquery.unobtrusive-ajax.min.js",
"~/Scripts/jquery.validate.unobtrusive.min.js",
"~/Scripts/bootstrap.min.js"
)
@RenderSection("JavaScript", required: false)
</head><!DOCTYPE html>
<html>
<head>
<title>Index</title>
<link href="/Content/css?v=vsUQD0OJg4AJ-RZH8jSRRCu_rjl2U1nZrmSsaUyxoAc1" rel="stylesheet"/>
<script src="/Scripts/js?v=GezdoTDiWY3acc3mI2Ujm_7nKKzh6Lu1Wr8TGyyLpW41"></script>
</head><body>
<div>
<div>
<h1>
Title Title
</h1>
Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
</div>
<div>
@RenderBody()
</div>
</div>
</body><body>
<div class="row">
<div class="span7">
<h1>
Title Title
</h1>
Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
</div>
<div class="span5">
@RenderBody()
</div>
</div>
</body>@{
ViewBag.Title = "Index";
}
<h2>
Index</h2>
<div class="hero-unit">
<h2>@ViewBag.Message</h2>
<p>
This is a template to demonstrate the way to beautify the default MVC template
using Twitter Bootstrap website. It is pretty simple and easy.</p>
<p>
<a href="http://asp.net/mvc" class="btn btn-primary btn-large" style="color: White;">
To learn more about ASP.NET MVC visit »</a></p>
</div> <div class="row">
<div class="span1">1</div>
<div class="span1">1</div>
<div class="span1">1</div>
<div class="span1">1</div>
<div class="span1">1</div>
<div class="span1">1</div>
<div class="span1">1</div>
<div class="span1">1</div>
<div class="span1">1</div>
<div class="span1">1</div>
<div class="span1">1</div>
<div class="span1">1</div>
</div>
<div class="row">
<div class="span3">3</div>
<div class="span4">4</div>
<div class="span5">5</div>
</div>
<div class="row">
<div class="span5">5</div>
<div class="span7">7</div>
</div>
<div class="row">
<div class="span3">3</div>
<div class="span7 offset2">7 offset 2</div>
</div>
<div class="row">
<div class="span12">12</div>
</div>[class*="span"]
{
background-color: lightblue;
text-align: center;
margin-top: 15px;
}@media (min-width: 768px) and (max-width: 979px) {
.hidden-desktop {
display: inherit !important;
} <div class="container-fluid">
<div class="row-fluid">
<div class="span4">
<div class="visible-phone">
visible-phone</div>
</div>
<div class="span4">
<div class="visible-tablet">
visible-tablet</div>
</div>
<div class="span4">
<div class="visible-desktop">
visible-desktop</div>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<div class="span4">
<div class="hidden-phone">
hidden-phone</div>
</div>
<div class="span4">
<div class="hidden-tablet">
hidden-tablet</div>
</div>
<div class="span4">
<div class="hidden-desktop">
hidden-desktop</div>
</div>
</div>
</div>.span12 {
width: 940px;
}
.span1 {
width: 60px;
}.row-fluid .span12 {
width: 100%;
*width: 99.94680851063829%;
}@gridColumns: 12; @gridColumnWidth: 60px; @gridGutterWidth: 20px;
@BundleConfig.AddStyles("~/Content/css",
"~/Content/bootstrap.css",
"~/Content/bootstrap-responsive.css",
"~/Content/Site.css"
)@BundleConfig.AddStyles("~/Content/css",
"~/Content/bootstrap.css",
"~/Content/bootstrap-responsive.css",
"~/Content/Site.css"
) @BundleConfig.AddStyles("~/Content/css",
"~/Content/bootstrap.css",
"~/Content/Site.css")
...
var existing = BundleTable.Bundles.GetBundleFor(virtualPath);
//if (existing != null)
// return;
PM> Update-Package
<link href="/Content/myCSS?v=LBa4VrARIJBApHOXLQoCWVPKu_c6QBb4D7npv-dq5TA1" rel="stylesheet"/> <script src="/Scripts/js?v=rk-l3czPS8KW6usEOpK8aIglVqPOVEKWoSXV4N-5N2Q1"></script>
و با کلیک بر روی فایل js تولید شده نیز به صورت زیر میباشد :
'MvcApplication7.Helper.AsIsBundleOrderer' does not implement interface member 'System.Web.Optimization.IBundleOrderer.OrderFiles(System.Web.Optimization.BundleContext, System.Collections.Generic.IEnumerable<System.Web.Optimization.BundleFile>)'
/// <summary>
/// A custom bundle orderer (IBundleOrderer) that will ensure bundles are
/// included in the order you register them.
/// </summary>
public class AsIsBundleOrderer : IBundleOrderer
{
public IEnumerable<BundleFile> OrderFiles(BundleContext context, IEnumerable<BundleFile> files)
{
return files;
}
} میشه راهنمایی بفرمائید؟ با تشکر
PM> Install-Package Twitter.BootstrapRTL -Version 2.3.2.1
PM> Install-Package Twitter.BootstrapRTL -Version 2.3.2.1
و مشکل منوها حل شد.فقط فایلهای validation و ajax رو همچنان ندارم
<compilation debug="true" targetFramework="4.5" />
در کل اگر این روش برای شما کار نمیکند، شرط HttpContext.Current.IsDebuggingEnabled را از متد addBundle حذف کنید و else آنرا نگه دارید.
Line 19: @BundleConfig.AddStyles("~/Content/css",
Line 20: "~/Content/bootstrap.css",