2011-09-16 65 views
9

我是MVC3 Razor中的新成员,并且希望在视图(index.cshtml)上显示运行时间。 我使用JavaScript函数,并把它放在_Layout.cshtml因此,所有其他的“家”的观点可以用它(见下面的代码片段)MVC3 Razor:从视图调用javascript函数

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title> 
     @ViewBag.Title 
    </title> 
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script> 
</head> 
<script type="text/javascript"> 
    var uhr = new Date(); 
    var minuten; 
    var stunden; 
    var sekunden; 
    var interval = 500; 

    function datum(id) { 
     uhr.setTime(uhr.getTime() + interval); 
     window.setTimeout(function() { datum(id) }, interval); 
     minuten = uhr.getMinutes(); 
     stunden = uhr.getHours(); 
     sekunden = uhr.getSeconds(); 
     if (minuten < 10) { minuten = '0' + minuten; } 
     if (sekunden < 10) { sekunden = '0' + sekunden; } 
     if (stunden < 10) { stunden = '0' + stunden; } 
     document.getElementById(id).innerHTML = 'Jetzt ist: ' + stunden + ':' + minuten + ':' + sekunden; 
    } 
</script> 

我的问题:1。 我如何可以调用这个函数(如数据(“uhr”))从index.cshtml?我试(见下)不工作:

@section SideBar { 
    <p> 
     <ul> 
      <li><a href="Index.cshtml">Add Job</a></li> 
      <li><a href="About.cshtml">About</a></li> 
     </ul> 
    </p> 
    <p> 
     The time is: datum("uhr"); 
    </p> 
} 
  1. 任何其他 “更好” 的方式?
  2. 这是一个很好的做法吗?我不确定将javascript函数放在_Layout.cshtml中是否正确。

Thx提前。

回答

11

你应该将代码从_Layout.cshtml转换为单独的.js文件并添加对其的引用。

此外,你应该改变index.cshtml代码是这样的:

@section SideBar { 
<p> 
    <ul> 
     <li><a href="Index.cshtml">Add Job</a></li> 
     <li><a href="About.cshtml">About</a></li> 
    </ul> 
</p> 
<p> 
    The time is: <span id="uhr"></span> 
</p> 
<script type="text/javascript">datum("uhr");</script> 
} 

JS Fiddle Example

+0

我应该在哪个文件夹中放入.js文件? – MagB

+0

脚本与您的其他JavaScript文件将最有意义。 –

+0

我把新的.js放在脚本文件夹中,它可以工作。但第二次比第二次更快。如何控制这个? Thx提前。 – MagB

-3

基准函数的最后一行应该返回的时间,而不是设置的innerHTML:

return 'Jetzt ist: ' + stunden + ':' + minuten + ':' + sekunden; 

,然后你的HTML可以是这样的:

The time is: <script type="text/javascript">datum(uhr)</script> 
+0

遗憾的是它不工作。 Thx为您的尝试。 – MagB

相关问题