Hey I would like to achieve something that with dynamic parameters.
For example I have this Controller Action:
[HttpGet]
public async Task TestParam(string firtname, string lastname, string persnr)
{
Console.WriteLine("Firstname: " + firtname);
Console.WriteLine("Lastname: " + lastname);
Console.WriteLine("Persnr: " + persnr);
}
Is it possible that my request can look like this:
Url | Firstname | Lastname | Persnr |
---|---|---|---|
URL/?firtname=Test&lastname=Test&persnr=123 |
Test | Test | 123 |
URL/?firtname=Test&persnr=123 |
Test | 123 | |
URL/?lastname=Test&persnr=123 |
Test | 123 | |
URL/?persnr=123 |
123 |
So basically that I don’t have to write all parameters?
Because if I make them optional with
TestParam(string firtname = "", string lastname = "", string persnr = "")
I have to write the url like that
URL/?firtname=&lastname=&persnr=123
to only see the persnr.
What is the best way to achieve this?
2
Answers
The Answer from Peter Csala worked but I'll have a second solution.
This will read all parameters your write in the uri. For example lastname is not set in the uri it will be empty.
HttpUtility.ParseQueryString
You can create a model class for your query parameters like this:
Then you can replace your
TestParam
signature like this:For more information please check this MSDN article.