简体   繁体   中英

How to pick query string in ASP.Net MVC4 Razor

I have a URL like that

http://localhost:1243/home/index/?skip_api_login=1&api_key=145044622175352&signed_next=1

Now home is my controller index is my action.

But please tell me how I can pick value of skip_api_login , api_key , signed_next in asp.net MVC4 razor .

I want to use those values in controller and views. Please tell me how to pick them.

You could have your controller action take them as parameters and the model binder will set their values form the query string:

public ActionResult Index(string skip_api_login , string api_key, int signed_next)
{
    ...
}

or event better, write a view model:

public class MyViewModel
{
    public string Skip_api_login { get; set; }
    public string Api_key { get; set; }
    public int Signed_next { get; set; }
}

that your Index action will take as parameter:

public ActionResult Index(MyViewModel model)
{
    ...
    return View(model);
}

and then your view could be strongly typed to this view model and you will be able to access those values:

@model MyViewModel
...
@Html.DisplayFor(x => x.Skip_api_login)
@Html.DisplayFor(x => x.Api_key)
@Html.DisplayFor(x => x.Signed_next)

Of course you could always access query string parameters from the Request object:

@Request["skip_api_login"]

But you probably don't want to be doing such things in your view. Remember that a view is supposed to work only with the values that the controller action has provided it under the form of a view model. A view is not supposed to be fetching values from request, sessions, viewdatas, viewbags, databases, and whatever comes to your mind. A view in ASP.NET MVC has a single responsibility: use the information from the view model.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM