将值从Dictionary添加到ActionLink

时间:2016-02-29 13:47:07

标签: c# asp.net asp.net-mvc dictionary actionlink

我正在尝试使用ActionLink发送对象列表。密钥有效,但即使它包含对象,我也无法在列表中获得任何内容。 我做错了什么?

我的模型包含一个Dictionary,其中Key是一个字符串,Value是一个List

$my_date = "29/02/2016";
$scheduled_job = strtotime($my_date);
$this_week = strtotime("first day this week");
$last_week = strtotime("last week monday");
$this_month = strtotime("first day this month");
$last_month = strtotime("first day last month");
$last_three_month = strtotime("first day -3 month");

if($scheduled_job > $this_week) {
    echo 1;
}

if($scheduled_job < $this_week and $scheduled_job >= $last_week) {
    echo 2;
}

if(strtotime($date_job) > $this_month) {
    echo 3;
}

if($scheduled_job < $this_month and $scheduled_job >= $last_month) {
    echo 4;
}

if(strtotime($date_job) > $last_three_month) {
    echo 5;
} 

我的LoadSelectedClinicView看起来像这样

@foreach (var clinic in Model.Clinics)
{
    <div>@clinic.Key</div>
    @Html.ActionLink(clinic.Key, "LoadSelectedClinicView", "Clinic", new {customerName=clinic.Key, dictionaryVal=clinic.Value}, null)
}

1 个答案:

答案 0 :(得分:1)

默认的Html帮助程序不支持使用对象列表作为Url路由的参数,因此这不起作用:

@Html.ActionLink(clinic.Key, "LoadSelectedClinicView", "Clinic", new {customerName=clinic.Key, dictionaryVal=clinic.Value}, null)

您需要自己构建网址。您可以编写一个简单的静态方法,该方法接受根URL和列表,并返回一个查询字符串,其参数与&amp;连接。分隔符。 String.join是一种方便的方法:

string.Join("&",list)

您需要注意URL不超过Url的最大长度,类似于2,083个字符长。