我正在努力制作一个数字标牌网站,它将在我公司的电视屏幕上运行。我的想法是使用MVC来使表示层和数据层的划分变得相当容易。我需要一个网站,显示各种各样的网页-一些将有谷歌风格的仪表板控制,如量规和桌子,一些公告,和一个新闻滴答沿着底部爬行,而网页翻转进出。问题是我对MVC不太熟悉。
我有很多问题,得到一个网站,将切换到一个新的网页,每5或10秒。我对如何使用布局页面、部分视图和回调控制器感到困惑。我已经做了四天了,所以我有大量的代码,但是我不想把所有的代码都粘贴到这里。
这只是我尝试过的一些基本知识(我将省略一些样板的东西,比如head元素,以及那些我没有做任何特别事情的东西):
_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>© @DateTime.Now.Year - My ASP.NET Application</p>
</footer>
Company1_Layout
@{
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 (这是我尝试启动站点的地方,然后开始调用新页面以显示)
@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函数中直接调用一个--这种方法很有效,但是在直接调用页面之后,它似乎会清除掉任何,这样就会有两个尾括号和分号等等。我认为我必须使用AJAX来调用控制器操作方法,实际上,我的控制器中的断点每5秒就会被击中一次,但是什么也没有发生。不出现无视图。
我想我必须指定一个区域来显示新的视图,比如一个,然后我调用$("#foo")......what?装载还是html?我不确定,似乎都没做什么。但是我似乎应该使用一个呈现操作,但我不确定是否应该使用RenderPartial().这难道不是Home.cshtml页面的一部分吗?我想要一个新的页面出现,HSMGauge.cshtml。
另外,我尝试将计时器放在_Layout页面中,然后保留一个可以传递给控制器的javascript变量,但这似乎有一个问题,因为这样做时会出现一个错误,即变量超出了作用域。所以现在我的想法是让Home.cshtml启动站点,然后当每个控制器中的操作方法被调用时,它返回要打开的特定视图。但正如我所说,当控制器中的操作被调用时,什么都不会发生。没有错误,只是什么都没有。
基本上,如果有人有时间或精力,他们能指出一些我做错了的事情吗?一些很好的例子或网站教我如何在Google上找到这些东西,或者只是告诉我,我用MVC找错了树?
发布于 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,所以我认为这是一个很好的堆栈。
https://stackoverflow.com/questions/24273471
复制相似问题