5

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

location.href = '@Url.Action("Display", "Customer", new { username = "abc",name = "abcdef",country = "India",email = "abc@hmail.com",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?

leppie
  • 115,091
  • 17
  • 196
  • 297
Kokila
  • 997
  • 3
  • 8
  • 14

2 Answers2

7

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 = "abc@hmail.com",phone = "9456974545"}))';

Hope this helps

Karthik Chintala
  • 5,465
  • 5
  • 30
  • 60
1

There is a problem with '&' being encoded to the '& amp;'

model binder doesnt recognise this value. You need to prevent this encoding by rendering link with Html.Raw function.

Use '@Html.Raw(Url.Action......)'

Michal Franc
  • 1,036
  • 10
  • 16