2014-02-13 3 views
4

У меня есть URL, как этотКак выбрать строку запроса в ASP.Net MVC4 Razor

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

Теперь home мой контроллер index это мое действие.

Но скажите, пожалуйста, как я могу выбрать значение skip_api_login, api_key, signed_next в asp.net MVC4 бритвой.

Я хочу использовать эти значения в контроллере и представлениях. Скажите, пожалуйста, как их выбрать.

ответ

6

Вы могли бы ваши действия контроллера принять их в качестве параметров и модель связующий установит их значения образуют строку запроса:

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

или событие лучше, написать вид модели:

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

что ваше действие индекса будет приниматься в качестве параметра:

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

, а затем ваш взгляд может быть сильно типизированных с этой точки зрения модели, и вы сможете получить доступ к этим значения:

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

Конечно, вы всегда можете получить доступ к параметрам строки запроса из Request объекта:

@Request["skip_api_login"] 

Но вы, вероятно, не хочу делать такие вещи на ваш взгляд. Помните, что представление должно работать только со значениями, которые действие контроллера предоставило ему в форме модели представления. Представление не должно извлекать значения из запроса, сеансов, viewdatas, viewbags, баз данных и того, что приходит вам на ум. Вид в ASP.NET MVC несет одну ответственность: используйте информацию из модели представления.

+0

бот, что произошло, если один из них недоступен в URL-адресе. также мне нужно зарегистрировать эти ключи в файле RouteConfig –

+0

Мои глаза немного закричали кровь, когда я увидел эту последнюю часть :) –

+1

@SimonWhitehead Почему? –

Смежные вопросы