У меня есть следующий сценарий:
$('#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?
Ты можешь использовать "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 для тебя.
Просто 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.
Как кажется, estГЎs властвуя parГЎmetros из-за Url, из-за того, что ты должен убирать она "/" despuГ©s от load, менять ее на один? и потом помещать их parГЎmetros, в котором ты нуждался и Ваша стоимость, отделенный из-за &:
.load(this.href + '?id=' + $('#companyId').val()+"&proveedorId="$('#id').val();