-2

次のコンテキスト内から関数GetDurationを呼び出す方法を教えてください。

@{
...
...
<div>  GetDuration(@item.StartDate, @item.EndDate) </div>
...
...
}

この関数GetDuration()は、私のコンテキストで言及されている親DIV内に別のDIVを動的に作成します。

私には2つの問題があります:

  • GetDuration()コードに示されている場所から関数を呼び出す方法がわかりません
  • startdatum.Month.ToString("MMMM");"MMMM"月の名前の代わりに戻ります

前もって感謝します!

これは私のコードです:

<script type="text/javascript">

function GetDuration(startdatum, einddatum) {
    var maand1 = startdatum.Month.ToString("MMMM");
    var maand2 = einddatum.Month.ToString("MMMM");
    var duration = "Date: ";
    if (maand1 == maand2) {
        duration += item.Startdate.Day.ToString()
            + " - " + item.Enddate.Day.ToString()
            + " " + maand1
            + " " + item.Startdate.Year.ToString();
    }
    else {
        duration += item.Startdate.Day.ToString()
            + item.Startdate.Month.ToString("MMMM")
            + " - " + item.Enddate.Day.ToString()
            + " " + item.Enddate.Month.ToString("MMMM")
            + " " + item.Startdate.Year.ToString();
    }
    var dynDiv = document.createElement("div");
    dynDiv.class = "HP_DateDiv";
    dynDiv.innerHTML = duration;
    document.body.appendChild(dynDiv);
}

</script>


    @{  string prevYear = "";

    foreach (var item in ViewData.Model) {

        string year = item.StartDate.Year.ToString();
        if (year != prevYear)
        {
            <div class="contentheader"> 
                @year Formula 1 Tickets
            </div>

            prevYear = year;  
        }
        <div class="HP_eventBodyDiv">
            <div class="HP_picDiv" style = "width:100px; height:100px;">
                <a href="http://www.cssdrive.com/" class="highlightit"><img  src="../../Content/Pics/auto.jpg" alt="oto" height="50" width="50"/></a>
            </div>
            <div class="HP_eventDiv">
                <div class="HP_eventNameDiv">@item.Name
            </div>
<!--This is the spot to call my function with something like "GetDuration(@item.StartDate, @item.EndDate)"-->
                <div class="HP_viewBuyBtnsDiv">
                    <input id="btn_View" type="button" value="View Event" class="contentbtn"/>
                    <input id="btn_Buy" type="button" value="Buy Tickets" class="contentbtn"/>
                </div>
            </div>
        </div>            

        };
     }
4

1 に答える 1

0

これについて少し説明できるかどうか見ていきます。Razor構文を使用すると、ビューで行うようなすばらしい処理を実行できます。ビューのコレクションを反復処理する機能は非常に優れており、動的ページを作成するための優れた柔軟性を提供できます。サーバーは実際に、提供した構文でRazorビューを作成し、ビルドHTMLページをクライアントに送信します。これにはスクリプトタグが含まれます。ですから、あなたがやろうとしていることは実際にはうまくいきません。ページがまだレンダリングされていないため、@foreachでJavaScript関数を繰り返し呼び出すことはできません。Razor Viewが完全に形成された後でのみ、Javascriptの使用を検討する必要があります。次に、JavaScriptを使用してDOMを編集できます。

だから私の提案は編集が言うことです。サーバーにそのプロパティを計算させ、モデルと一緒に送信します。

編集:

更新されたコードを見た後、待ってください。これは間違った方向に進んでいると思います。デュレーションの計算にJavaScriptを使用している理由がわかりません。特にそのような計算フィールドの場合は、通過するモデルを編集して期間を含める必要があります。次に、他のプロパティと同じように期間を表示できます。

編集2:

public class MyNewClass
{
public DateTime StartDate {get;set;}
public DateTime EndDate {get;set;}
public int Duration
{
get{
//Do your Logic Here with startdate and enddate
}
set;
}
}
于 2012-05-10T14:39:55.797 に答える