Как отправить два параметра в ActionResult в ASP MVc?

У меня есть следующий сценарий:

    $('#btnCreate').click(function (e) {
    e.preventDefault();
    $('#btnCreate').attr('data-modal', '');
    $('#btnCreate').attr('data-toggle', 'modal');
    $('#myModalContent').load(this.href + '/' + $('#companyId').val(), function () {

        $('#myModal').modal({
            /*backdrop: 'static',*/
            keyboard: true
        }, 'show');
        bindForm(this);
        $('#btnCreate').removeAttr('data-modal');
        $('#btnCreate').removeAttr('data-toggle');
    });
    return false;
});

, который должен отправить мне два параметра для этого ActionResult:

[HttpGet]
public ActionResult CreateByCompany(int id,int proveedorId)
{
    var bancoViewModel = new BancoViewModel();
    bancoViewModel.BancosNombresViewModel = GetBancosNombres();
    bancoViewModel.CompañiaId = id;
    bancoViewModel.ProveedorId = proveedorId;

    return View(bancoViewModel);
}

Эти параметры будут взяты из двух скрытых элементов:

@Html.HiddenFor(m => Model.CompañiaId, new { @id = "companyId"})
@Html.HiddenFor(m => Model.ProveedorId, new { @id = "proveedorId" })

В настоящий момент он только отправляет мне соответствующее значение в «companyId».

Как я могу отправить значение этих параметров в свой ActionResult?

1
задан 10.05.2016, 00:26
3 ответа

Ты можешь использовать "ajax" что-либо подобное:

$.ajax({
    type: 'GET',
    url: '@Url.Action("GetUnitDateRangeParamsVals", "UnitReportDateRangeParams")',
    data: { unit: unitval, report: 1 },
    cache: false,
    success: function (returneddata) {
        populatedaterangeprams(1, returneddata);
    },
    error: function () {
        alert('error in GetUnitDateRangeParamsVals.1');
    }
});

Здесь - метод в Controller: У

public class UnitReportDateRangeParamsController : Controller
{
    public JsonResult GetUnitDateRangeParamsVals(string unit, int report)
    {
        UnitReportDateRangeParamsModel model = new UnitReportDateRangeParamsModel();
        try
        {
            string qry = string.Format(SQL.UnitReportDateRangeQuery, unit, report);
            DataTable DateRangeParamsValsDT = SQL.ExecuteSQLReturnDataTable(
                qry,
                CommandType.Text,
                null
                );

            UnitReportDateRangeParamsModel.DateRangeParams daterangeparams =
                (from DataRow row in DateRangeParamsValsDT.Rows
                 select new UnitReportDateRangeParamsModel.DateRangeParams
                 {
                     TimeUnitsFrom = Convert.ToInt32(row["ParamBeginRange"]),
                     TimeUnitsTo = Convert.ToInt32(row["ParamEndRange"])
                 }).Single();

            model.daterangeparams = daterangeparams;
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        return Json(model, JsonRequestBehavior.AllowGet);
    }
}

Наверху есть Controller string и int, но должен будь быть достаточно semajante для тебя.

1
ответ дан 24.11.2019, 14:28
  • 1
    Привет Клей: Спасибо за твой ответ, тема состоит в том, что result этого Action - вид, который я показываю, как Модальный, тогда линия, которая вызывает мне конфликт, - эта: $ (и #39; #myModalContent и # 39;) .load (this.href + и #39; / и #39; + $ (и #39; #companyId и # 39;) .val () , так как aqu и # 237; он, где я должен перемещать пару и # 225; метры, я понимаю использование ajax до некоего уровня, но мне не удается увидеть, как приспосабливать то, что ты предлагаешь мне в упомянутую линию. Большое спасибо. – jose luis garcia 10.05.2016, 01:24

Просто deberГ-схвати делать одна peticiГіn Аякс с mГ©todo GET (так как ты считаешь украшенной ее acciГіn с признаком HttpGet) посылая стоимость, как ты выкопал, пойдите (compaГ±Г-a) и proveedorId (поставщик).

Восток serГ - в простой пример:

$('#btnCreate').click(function(e) {
    $.ajax('@Url.Action("CreateByCompany")', {
        data: { id: $('#companyId').val(), proveedorId: $('#proveedorId').val() },
        method: 'GET'
    }).done(function(data) {
        $('#myModalContent').html(data);
    });
});

TambiГ©n у тебя есть она opciГіn, Аякс использует расширение с нею librerГ - в Microsoft.jQuery. Unobstrusive. Аякс:

    @Ajax.ActionLink("Crear", "CreateByCompany",
        new
        {
            id = Model.CompaniaId,
            proveedorId = Model.ProveedorId
        },
        new AjaxOptions()
        {
            HttpMethod = "Get",
            UpdateTargetId = "myModalContent",
            InsertionMode = InsertionMode.Replace
        });

Восток пример верьте в соединение который envГ - в стоимость CompaniaId и ProveedorId в acciГіn CreateByCompany и устанавливает контент, возвращенный как контент элемента myModalContent.

1
ответ дан 24.11.2019, 14:28
  • 1
    Привет Асиер: Второй ответ немного интересен, этот фрагмент c и # 243; я говорю идти и # 237; в в bot и # 243; n, в который стреляет acci и # 243; n?, уже раньше hab и # 237; в попробованный немного схвати и # 237; но я perd и # 237; где называть этот helper ajax. – jose luis garcia 10.05.2016, 01:45
  • 2
    Нет, этот c и # 243; я говорю, что он производит прямо соединение с текстом " Crear" и который, нажав это, производит petici и # 243; n Аякс. – Asier Villanueva 10.05.2016, 01:47
  • 3
    Помни, что, чтобы этого мочь использовать нуждаться и # 225; s включать librer и # 237; в jquery.unobtrusive-ajax.js – Asier Villanueva 10.05.2016, 01:48
  • 4
    Привет Асиер: Я попытался с формой, которую ты показываешь мне, но я получаю это сообщение ошибки detect и # 243; возможная стоимость Request. Опасный Path в клиенте (<).] это часть рукописного шрифта, который я выполняю: и #39; success: function (result) {$ (и #39; #myModalContent и # 39;) .load (result, function () {$ (и #39; #myModal и # 39;) .modal ({и #39; – jose luis garcia 11.05.2016, 02:29
  • 5
    Не быть должным и # 237; в, y меньше имея в виду, что данные, которые проходят, - целые. Эта ошибка прыгает, когда.NET он обнаруживает в каком-либо из посланных данных что-то (как car и # 225; cter <), который он может показывать, что est и # 225; пробуя реализовывать атаку Кросс Сите Scripting. Habr и # 237; которого видеть c и # 243; я говорю, чтобы видеть d и # 243; nde est и # 225; проблема. – Asier Villanueva 11.05.2016, 10:04

Как кажется, estГЎs властвуя parГЎmetros из-за Url, из-за того, что ты должен убирать она "/" despuГ©s от load, менять ее на один? и потом помещать их parГЎmetros, в котором ты нуждался и Ваша стоимость, отделенный из-за &:

.load(this.href + '?id=' + $('#companyId').val()+"&proveedorId="$('#id').val();
0
ответ дан 24.11.2019, 14:28