首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MVC5:数字标牌网站

MVC5:数字标牌网站
EN

Stack Overflow用户
提问于 2014-06-17 21:20:06
回答 1查看 1.3K关注 0票数 2

我正在努力制作一个数字标牌网站,它将在我公司的电视屏幕上运行。我的想法是使用MVC来使表示层和数据层的划分变得相当容易。我需要一个网站,显示各种各样的网页-一些将有谷歌风格的仪表板控制,如量规和桌子,一些公告,和一个新闻滴答沿着底部爬行,而网页翻转进出。问题是我对MVC不太熟悉。

我有很多问题,得到一个网站,将切换到一个新的网页,每5或10秒。我对如何使用布局页面、部分视图和回调控制器感到困惑。我已经做了四天了,所以我有大量的代码,但是我不想把所有的代码都粘贴到这里。

这只是我尝试过的一些基本知识(我将省略一些样板的东西,比如head元素,以及那些我没有做任何特别事情的东西):

_ViewStart

代码语言:javascript
运行
复制
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}

_Layout

代码语言:javascript
运行
复制
<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_Layout

代码语言:javascript
运行
复制
@{
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>

Home (这是我尝试启动站点的地方,然后开始调用新页面以显示)

代码语言:javascript
运行
复制
@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

代码语言:javascript
运行
复制
public ActionResult GoToBrooksGauge(int id)
    {
        decimal answer = repository.GetGaugeData("001", 1);
        ViewBag.Title = "Gauge";
        ViewBag.Pct = answer;
        return View("HSMGauge");
    }

问题--我一直试图在javascript函数中直接调用一个--这种方法很有效,但是在直接调用页面之后,它似乎会清除掉任何,这样就会有两个尾括号和分号等等。我认为我必须使用AJAX来调用控制器操作方法,实际上,我的控制器中的断点每5秒就会被击中一次,但是什么也没有发生。不出现无视图。

我想我必须指定一个区域来显示新的视图,比如一个,然后我调用$("#foo")......what?装载还是html?我不确定,似乎都没做什么。但是我似乎应该使用一个呈现操作,但我不确定是否应该使用RenderPartial().这难道不是Home.cshtml页面的一部分吗?我想要一个新的页面出现,HSMGauge.cshtml。

另外,我尝试将计时器放在_Layout页面中,然后保留一个可以传递给控制器的javascript变量,但这似乎有一个问题,因为这样做时会出现一个错误,即变量超出了作用域。所以现在我的想法是让Home.cshtml启动站点,然后当每个控制器中的操作方法被调用时,它返回要打开的特定视图。但正如我所说,当控制器中的操作被调用时,什么都不会发生。没有错误,只是什么都没有。

基本上,如果有人有时间或精力,他们能指出一些我做错了的事情吗?一些很好的例子或网站教我如何在Google上找到这些东西,或者只是告诉我,我用MVC找错了树?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-17 21:29:27

根据您的描述,我使用客户端Javascript框架制作了一个单页申请(SPA),类似于针对WebAPI后端的AngularJS。如果您经常更改页面,并使用仪表板,它将提供一个更好的闪烁自由效果。您可以使用页面之间的转换(比如powerpoint),而且仪表板组件可以很容易地异步加载,因此页面加载速度更快。可以使用像Breeze这样的工具缓存客户端的数据。

为了学习AngularJS,我建议您看一下约翰帕帕斯代码营PluarlSight培训课程。我在几天之内就学会了。他有一个很好的入门模板/框架,叫做nuget上的HotTowel.Angular.Breeze

在我看来,web应用程序的未来主要是调用API的客户端应用程序。越来越多的应用程序都是这样的。AngularJS很受欢迎,它与其他框架进行了很好的集成。MS投资于.Net WebAPI和MVC6 in vNext,所以我认为这是一个很好的堆栈。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24273471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档