Views文件夾中的資源是CSS,在View中使用的圖像,現在我知道它不同於它的意思,我們已經把所有東西放在Contents文件夾中,但我正在尋找更好的方式來管理它。如何訪問ASP.NET視圖文件夾中的資源?
我們有一個非常大的MVC 4,有很多地區,每個地區都有很多意見。爲了維護一切,我們在內容文件夾中創建了類似的文件夾結構,以相應地分發CSS和圖像
但問題是,引用每個資源的視圖。跟蹤變得困難,這裏是文件夾結構。
- 區
- 應用
- 控制器
- 查看
- 項目
- Search.cshtml
- 用戶
- Account.cshtml
- 項目
- 應用
- 內容
- common.less
- 應用
- app.less
- 一些,但ton.png
- projects.less
- users.less當我們有太多的資源和交叉引用是困難的,因爲我們做用戶界面更改現在
出現問題,新隨着項目的發展,視圖會出現。
我想有資源爲以下格式,
- 區
- 應用
- 控制器
- 查看
- 項目
- Search.cshtml
- search.less
- 一些按鈕。PNG
- 用戶
- Account.cshtml
- account.less
- 一些-button.png
- 項目
- 應用
我該怎麼辦?
我的每一個控制器都來自一個普通的AppController,我們在其中驗證用戶身份驗證和角色。我已經實現了CustomActionInvoker來查找如下的視圖。
private string defaultViewName = "";
protected virtual object GetDefaultViewModel() {
return null;
}
public virtual ActionResult DefaultView() {
try
{
var view = this.View(defaultViewName);
if (view == null)
{
return HttpNotFound(defaultViewName + " View not found");
}
ViewBag.Title = defaultViewName;
}
catch
{
//Utils.Log(ex);
//throw;
return HttpNotFound(defaultViewName + " View not found");
}
return View(defaultViewName, GetDefaultViewModel());
}
protected override IActionInvoker CreateActionInvoker()
{
return new DefaultViewInvoker(base.CreateActionInvoker(), this);
}
internal class DefaultViewInvoker : ControllerActionInvoker {
private IActionInvoker parent;
private CastingWebController wc;
internal DefaultViewInvoker(IActionInvoker parent, CastingWebController wc)
{
this.parent = parent;
this.wc = wc;
}
protected override ActionDescriptor FindAction(ControllerContext controllerContext, ControllerDescriptor controllerDescriptor, string actionName)
{
ActionDescriptor ad = base.FindAction(controllerContext, controllerDescriptor, actionName);
if (ad == null) {
wc.defaultViewName = actionName;
ad = base.FindAction(controllerContext, controllerDescriptor, "DefaultView");
}
return ad;
}
}
這很好,即使我們沒有控制器上的操作方法,它也會分發CSHTML文件。但是,這不適用於CSS和圖像。
例,
/App/Projects/Search
容易處理和服務的,我們沒有看到原始CSHTML下載反正。
App/Views/Projects/Search.cshtml
我需要一些幫助在訪問
/App/Projects/Search.css
/App/Projects/some-button.png
在路徑
/App/Views/Projects/Search.css
/App/Views/Projects/some-button.png
由於這些不CSHTML,取景器不容易找到他們,也是我需要爲他們服務的靜態下載,除了cshtml,aspx和註冊MIME類型之外的任何東西。
並且爲了增加它,我們還將DisplayModes與移動設備和平板電腦相連,這使得管理資源變得更加困難。
爲什麼在瀏覽文件夾這些資源在〜/ Views文件夾編輯的web.config,允許除.cshtml文件的訪問什麼?視圖文件夾用於...視圖。 –
@AntP當然我知道,資源是CSS,視圖內使用的圖片。 –
將它們放在「css」和「圖像」文件夾中的視圖文件夾之外。 –