Razor Javascript动态格式的锚不起作用

时间:2017-10-08 05:04:52

标签: javascript html asp.net-mvc razor

我正在尝试使用以下代码动态格式化Razor Url.Action调用:

<script>

function getArchiveDisplayStr(str)
{
    var parts = str.split("-");
    var year = parts[0];
    var month = getMonth(parts[1]);
    return year + " " + month;
}

function getMonth(monthStr)
{
    switch (monthStr)
    {
    case "1":
        return "Jan";

    case "2":
        return "Feb";

    case "3":
        return "Mar";

    case "4":
        return "Apr";

    case "5":
        return "May";

    case "6":
        return "Jun";

    case "7":
        return "Jul";

    case "8":
        return "Aug";

    case "9":
        return "Sep";

    case "10":
        return "Oct";

    case "11":
        return "Nov";

    case "12":
        return "Dec";

    default:
        return "";
    }
}

function createAnchor(monthID)
{
    var displayMonth = getArchiveDisplayStr(monthID);
    return '<a href="@@Url.Action("GetMonth", "Blog", new {monthID="2009-10"})">2009 Sep</a>';
}

</script>

<div>
    <script>
        var anchor = createAnchor('2009-10');
        alert(anchor);
        document.write(anchor);
    </script>
</div>

当我运行此代码时,警告框显示:

<a href="@@Url.Action("GetMonth", "Blog", new {monthID="2009-10"})">2009 Oct</a>

这是我的期望。但是,当我检查链接时,我看到以下内容:

<a href="@@Url.Action(" getmonth",="" "blog",="" new="" {monthid="2009-10" })"="">2009 Oct</a>

我需要动态创建这些链接,但我不明白为什么链接的设置与警告框不同。我错过了什么?

2 个答案:

答案 0 :(得分:0)

function createAnchor(monthID)
{
    var Href='@(Url.Action("GetMonth", "Blog", new {monthID="2009-10"}))';
    var displayMonth = getArchiveDisplayStr(monthID);
    return '<a href="'+ Href +'">2009 Sep</a>';
}

答案 1 :(得分:0)

不要试图像我一样创建链接,最好让Razor为我做。

 @foreach (var item in Model.ArchiveList)
 {
     <div class="site-normal no-space-after">
         @if (DateTimeFormatInfo.CurrentInfo != null)
         {
             var link = item.Substring(0, 4) + " " + DateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(Convert.ToInt32(item.Substring(5, item.Length - 5)));
             @Html.ActionLink(link, "GetMonth", new { monthID = item })
         }
     </div>
 }