Search code examples
asp.net-mvccontrollerurl.action

Only first parameter value is getting while calling controller method using Url.action.


I am calling a controller method using Url.action like,

location.href = '@Url.Action("Display", "Customer", new { username = "abc",name = "abcdef",country = "India",email = "[email protected]",phone = "9456974545"})';

My controller method is,

public void Display(string username, string name, string country, string email, string phone)
{    }

In this method, I can get only the value of first parameter (username). Its not getting other parameter values that is passed. All other values are null.

Please suggest me, whats wrong?


Solution

  • By default every content (which is not IHtmlString) emitted using a @ block is automatically HTML encoded by Razor.

    So, @Url.Action() is also get encoded and you are getting plain text. And & is encoded as &

    If you dont want to Encode then you should use @Html.Raw(@Url.Action("","")).

    The answer for you question is :

    location.href = '@Html.Raw(@Url.Action("Display", "Customer", new { username = "abc",name = "abcdef",country = "India",email = "[email protected]",phone = "9456974545"}))';
    

    Hope this helps