我正在尝试使用以下代码动态格式化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>
我需要动态创建这些链接,但我不明白为什么链接的设置与警告框不同。我错过了什么?
答案 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>
}