2014-06-17 35 views
1

我試圖製作一個數字標牌網站,它將在我公司的電視屏幕上運行。我的想法是使用MVC使分割表示層和數據層相當容易。我需要一個顯示各種頁面的網站 - 其中一些網站會顯示谷歌風格的儀表板控件,例如量表和表格,一些公告以及一個新聞自動收錄器,當頁面翻轉和翻轉時,會沿着底部爬行。問題是我對MVC不太熟悉。MVC5:數字標牌網站

我一直有很多問題,得到一個網站,將切換到一個新的一頁,每5或10秒。我很困惑如何使用佈局頁面,部分視圖和回調控制器。我一直在爲此工作四天,所以我有大量的代碼,但我不想把它全部粘貼在這裏。

正好與我都試過了基礎(我會離開了樣板的東西,如頭元素的東西在那裏我沒有做什麼特別的東西):

_ViewStart

@{ 
Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

_layout

<div class="container body-content"> 
    @RenderBody()   
</div> 

<footer> 
    <hr /> 
    <marquee behavior="scroll" direction="left"><img src="http://www.html.am/images/html-codes/marquees/fish-swimming.gif" width="94" height="88" alt="Swimming fish" /></marquee> 
    <p>&copy; @DateTime.Now.Year - My ASP.NET Application</p> 
</footer> 

Company1_Layou牛逼

@{ 
Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
<body class="greybackground container"> 
<header> 
    <img src="~/images/homesafetymatters_header.png" alt="Home Safety Matters"/> 
</header> 
<div class="container body-content" style="height:100%"> 
    @RenderBody() 
</div> 

首頁 (這是我試圖啓動該網站,然後開始調用新的頁面出現)

@model DigitalSignsPages.Models.Home 

@{ 
    ViewBag.Title = "Home"; 
} 

<!DOCTYPE html> 
<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>@ViewBag.Title</title> 
</head> 
<body> 
    <h2>Welcome to Digital Signage v2.0</h2> 


    <script> 
    window.setInterval(yourfunction, 5000); 

    function yourfunction() { 
     $.ajax({ 
      url: '/Gauge/GoToHSMGauge', 
      data: { id: 1 }, 
      success: function() { 
       console.log('Added'); 
      } 
     }); 
    } 
</script> 

GaugeController

public ActionResult GoToBrooksGauge(int id) 
    { 
     decimal answer = repository.GetGaugeData("001", 1); 
     ViewBag.Title = "Gauge"; 
     ViewBag.Pct = answer; 
     return View("HSMGauge"); 
    } 

問題我一直有 我是想直接在我的javascript函數調用的動作,以及諸如此類的工作,但它似乎直接在通話後沖洗所有的HTML頁面,以便會有一些結尾括號和分號等。我想我必須使用AJAX來調用控制器的動作方法,事實上,我的控制器中的斷點每5秒就會被擊中一次,但沒有任何反應。否否顯示視圖。

我想我必須指定一個區域,讓新的視圖出現,像a,然後我調用$(「#foo」)......什麼?加載或HTML?我不確定,似乎也沒有做任何事情。但似乎我應該使用渲染操作,但我不確定是否應該使用RenderPartial()...不會使它成爲Home.cshtml頁面的一部分嗎?我想要出現一個新頁面HSMGauge.cshtml。

此外,我試着在_Layout頁面中放置計時器,然後保留一個可以傳遞給控制器​​的JavaScript變量,但似乎有問題,因爲我會得到一個錯誤,該變量是當我這樣做的時候超出了範圍。所以現在我的想法是讓Home.cshtml啓動站點,然後當每個控制器中的操作方法被調用時,它返回一個打開的特定視圖。但正如我所說的,當控制器中的動作被調用時,什麼都不會發生。沒有錯誤,只是沒有。

基本上,如果有人有時間或精力,他們能指出我做錯的一些事情,一些很好的例子或網站教我如何做到這一點,我一直沒有找到與谷歌,或者只是告訴我,我正在用MVC咆哮錯誤的樹?

回答

4

從你的描述我會做一個Single Page Application (SPA)使用客戶端Javascript框架,如AngularJSWebAPI後端。如果您經常更換頁面並使用儀表板,它將帶來更好的無閃爍效果。您可以使用頁面之間的轉換(如Powerpoint),並且儀表板組件可以輕鬆異步加載,因此頁面加載速度更快。數據可以緩存客戶端使用像Breeze

對於學習AngularJS - 我建議看看John Pappas代碼陣營PluarlSight培訓課程。我在幾天內就知道了它。他有一個很好的入門模板/框架,名爲H otTowel.Angular.Breeze on nuget

在我看來,Web應用程序的未來主要是客戶端應用程序調用API。越來越多的應用程序就是這樣。 AngularJS很受歡迎,與其他框架等進行了很好的整合。MS正在投資vNet中的.Net WebAPI和MVC6,所以我認爲它是一個很好的堆棧

+0

謝謝,這是很好的建議。我猜想事情太複雜了。有人建議我使用MVC,但這可能不是我嘗試做的最好的框架。我喜歡Angular到目前爲止所看到的。 – Pete

+0

你當然可以結合我們所做的MVC和Angular。不過,我認爲只是WebAPI可能會讓生活變得更簡單。之後,您還將擁有定義良好的API,供將來移動應用程序,客戶或任何其他人使用 – GraemeMiller