Могу ли я получить доступ к раскрывающемуся значению главной страницы в действии контроллера в asp.net mvc - PullRequest
0 голосов
/ 17 января 2011

У меня есть главная страница, на которой я отображаю группы, к которым пользователь может получить доступ, и я хочу получить выбранное значение во многих контроллерах для сохранения вместе с записями. Я хочу знать, возможно ли это в asp.net mvc 2, а если нет, то как это можно обойти

Ответы [ 3 ]

1 голос
/ 17 января 2011

То, что вы пытаетесь, возможно, и есть разные методы для достижения этого. Лучший подход будет зависеть от того, как вы вызываете действия вашего контроллера. Используете ли вы обычные гиперссылки, отправляете стандарт <form> или используете AJAX. Поэтому, если вы используете стандартные ссылки действий, вы можете добавить некоторый JavaScript, который привязывается к событию onclick каждой ссылки и добавляет выбранное значение группы. Пример:

$(function() {
    $('a').click(function() {
        // everytime a link is clicked
        // add the value of the selected group to the url
        var selectedGroup = $('#IdOfYourDdl').val();
        if (this.href.indexOf('?') > 0) {
            window.location = this.href + '&selectedGroup=' + selectedGroup;
        } else {
            window.location = this.href + '?selectedGroup=' + selectedGroup;
        }
        // cancel the default action as it doesn't contain the selectedGroup
        // parameter in the request
        return false;
    });
});

и в вашем действии контроллера вы можете иметь этот дополнительный параметр:

public ActionResult Foo(string selectedGroup)
{
   ...
}

Другой пример: если вы используете AJAX, вы можете установить данные по умолчанию на главной странице, которые будут гарантировать, что значение раскрывающегося списка будет отправляться вместе с каждым выполняемым вами запросом AJAX:

$.ajaxSetup({
    data: { selectedGroup: $('#IdOfYourDdl').val() }
});

Теперь, когда вы отправляете запрос AJAX на ваш сервер:

$.get('/foo', { someParam: 'someValue' }, function(result) {

});

будет отправлен следующий запрос: /foo?someParam=someValue&selectedGroup=123, чтобы вы могли получить значение выбранной группы обратно в действии контроллера.

0 голосов
/ 17 января 2011

Поскольку ваш выпадающий список является потомком отправляемого <form>, он будет подвергаться стандартной привязке модели , что означает, что вы можете включить ее в качестве параметра в свое действие.Убедитесь, что атрибут name в раскрывающемся списке соответствует имени параметра действия.

Окончательный формат HTML:

<form action="http://.../MyAction" method="post">
  <select name="dropDownList">
    <option value="a">Option A</option>
    <option value="b">Option B</option>
    ...
  </select>
  ...
</form>

Контроллер:

[HttpPost]
public ActionResult MyAction(string dropDownList, MyActionModel model)
{
    // dropDownList = value attribute of selected <option>
    ...
}
0 голосов
/ 17 января 2011

Надеюсь, я понимаю ваш вопрос, так как не приведен пример кода. Вы можете сделать это используя viewmodel на странице, которая содержит ваши группы отображения. Другой вариант - получить значение из коллекции FormCollection при публикации страницы.

Например:

public ActionResult MyAction(MyViewmodel viewModel)
{
//value from your viewmodel, strongtype
var value = viewModel.group;
}

OR

public ActionResult MyAction(FormCollection collection)
{
//value as a string
var value = collection.getValue("MyKey").AttemptedValue;
}

Если этот ответ не отвечает вашим требованиям, пожалуйста, уточните свой вопрос, и я постараюсь помочь вам в дальнейшем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...