使用带有可选参数的Url.actions

时间:2014-02-13 16:29:32

标签: asp.net-mvc asp.net-mvc-4 parameters actionlink url.action

只是想知道是否有人可以帮助我。

我有一个MVC项目,在我看来我正在使用url.action链接到我的动作。我的动作可以处理3个可选参数Category,SubCategory和Name。但问题是SubCategory可能是Null所以我需要Name来替换URL.Action链接中的Subcategory。我的代码工作正常,但我想知道是否有更好的方法来编写这段代码。

我的网址。动作:

if(subcategory == null)
{
    <a href="@Url.Action("Action", "Controller", new { Parameter1 = Category, Parameter2 = subcategory, DataParameter3 = name})">Products</a>
}
else
    <a href="@Url.Action("Action", "Controller", new { Parameter1 = Category, Parameter2 = name})">Products</a>

有人知道更好的方法吗?

2 个答案:

答案 0 :(得分:0)

不确定这好多了,但至少在我看来它似乎更清洁......

@functions{
 IDictionary<string, object> GetRouteValues()
 {
    var vals = new Dictionary<string, object>();
    vals.Add("Parameter1", Category);
    if (subcategory != null){ 
      vals.Add("Parameter2", subcategory);
      vals.Add("Paremeter3", name);
    } else {
      vals.Add("Parameter2", name);
    }
    return vals;
 }
}

@Html.ActionLink("Products", "Action", "Controller", GetRouteValues(), null)

答案 1 :(得分:0)

这是另一种写<a>链接的方法。首先,检查subcategory是否为空:

@{
   string Parameter2 = name;
   string DataParameter3 = name;
   if(subcategory == null) Parameter2 = subcategory; else Parameter3 = null;
 }

<a href="@Url.Action("Action", "Controller", new { Parameter1 = Category, Parameter2 = Parameter2 , DataParameter3 = DataParameter3 })">Products</a>

你的行动可能是这样的:

public ActionResult Action(Parameter1, Parameter2, DataParameter3 = null )
{
}