2011-09-16 8 views
9

MVC3 Razorで新しく、ビュー(index.cshtml)で実行時間を表示したい。 (例えばデータム私はこの関数を呼び出すことができますどのように 1: 私は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> 

私の質問にそれを使用することができます( "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. いいですか? _Layout.cshtmlにjavascript関数を入れているのかどうか分かりません。

Thxです。

答えて

11

あなたは、コードを移動する必要があります_Layout.cshtmlから別々の.jsファイルにコピーし、そのファイルへの参照を追加します。

@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をscriptsフォルダに入れても動作します。しかし、2番手は2番手より速く走る。これを制御する方法は?あらかじめThx。 – MagB

-3

データム機能の最後の行ではなく、innerHTMLプロパティを設定するよりも時間を返す必要があります:

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

し、HTML、このようなものになることができます。

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

残念ながら、それは動作しません。

また、あなたはこのようにindex.cshtmlコードを変更する必要があります。あなたの試しにThx。 – MagB

関連する問題