0

Просто интересно, может ли кто-нибудь помочь мне.Использование Url.actions с необязательными параметрами

У меня есть проект MVC, и, на мой взгляд, я использую url.action для ссылки на мое действие. Мое действие может обрабатывать 3 необязательных параметра Category, SubCategory и Name. Но проблема заключается в том, что SubCategory может быть Null, поэтому мне нужно имя для замены подкатегории в ссылке URL.Action. У меня работает мой код, но мне интересно, есть ли лучший способ написать этот код.

Мой URL.Action:

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> 

знает любой один лучший способ сделать это ??

+0

вместо родового параметра я называю поля на контроллере и в том случае, если имя является недействительным Я просто проверяю это на контроллере и обрабатываю его соответственно –

+0

, который вы можете обрабатывать на уровне контроллера и можете перенаправлять на другое действие на основе параметров – Sunny

ответ

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) 
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) 
{ 
}