Привет, у меня есть метод действия, у которого есть параметр FormCollection.В форме есть 2 переключателя, как показано ниже:
@Html.RadioButton("radioSource", "Yes", true, new { id = "radioMoveAll", data_toggle = "tooltip", data_placement = "right", title = "Click to select", htmlAttributes }) Yes
@Html.RadioButton("radioSource", "No", false, new { id = "radioMoveAll", data_toggle = "tooltip", data_placement = "right", title = "Click to select", htmlAttributes }) No
Мой метод действия заключается в передаче коллекции форм в качестве параметра путем сериализации в коде ajax.
public ActionResult StructureMove(FormCollection form)
{
Structure sourceStructure = new Structure();
sourceStructure = (Structure)HttpContext.Session["Return-Source-Structure"];
HttpContext.Session["Form"] = form;
HttpContext.Session["Source-Structure"] = sourceStructure;
string selectedNode = sourceStructure.Code;
string returnStructure = "";
StructureToMove stm = (StructureToMove)HttpContext.Session["StructureMoveObject"];
var form1 = (FormCollection)HttpContext.Session["Form"];
if (HttpContext.Request.Form["radioSource"].HasValue())
{
stm.MoveAll = HttpContext.Request.Form["radioSource"]=="Yes"?true:false;
}
if (HttpContext.Request.Form["chkreturnToSource"].HasValue())
{
stm.ReturnToDestination = HttpContext.Request.Form.GetValues("chkreturnToSource")[0] == "true" ? true:false;
}
.....
}
Мой код ajax выполняет MoveControllerМетод Acton через Ajax, передавая форму как данные
$('#btnmoveStructure').unbind('click').click(function () {
var $form = $('#frmStructureMove');
var moveData = $form.serialize();
moveData = $('#frmStructureMove').serialize();
alert(moveData);
var winMoveStructure = $("#MoveStructureModalWindow").data("kendoWindow");
$.ajax({
type: 'POST',
async: true,
cache: false,
url: '/StructureMove/StructureMove',
// dataType:"json",
//data: { "model": moveData, "form": moveData },
data: { "form": moveData },
success: function (results) {
$('#btnmoveStructure').hide();
$('#MoveStructureModalWindow').html(results);
console.log("Move window results in HTML ");
},
complete: function () {
},
done: function () {
},
error: function (jqXHR, exception) {
var msg = "";
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status === 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status === 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
console.log("failure : " + msg);
}
});
Как получить значение переключателя внутри метода действия.current Request.Form ["radioSource"] действительно возвращает "yes", что неверно. Радиокнопка "при загрузке" всегда устанавливается в значение "Yes".
когда форма выполнения [0] возвращает следующие значения
hdnStructureCode = 0000641338 & __ RequestVerificationToken = MqBNaHfDzuRRkkvyp4tS716Fr4nRhlTANBASp3rJQYB2E1lpKLN40UuTW9e6a3caYIa2cCHCueouZbrKT7tcjc1mexSysWoXBi8P_J6gN_41 & Code = 0000641338 & Description = Батарея + Строка% 2C + VRLA% 2C + Century% 2FYuasa% 2C + UXH125-6% 2C + 6,00 + V% 2C + 110,00 + Ah & radioSource = Да & radioDestination = & DestinationCode = DCP-SS-00001922 & DestinationDescription = Батареи & chkReturnToSource = true & chkReturnToSource = false
Я выделил значение radioSource (да), но как я могу извлечь из него метод действия MVC C3 внутри. Пожалуйста, я застрял, как только могКстати, я не могу использовать значение ключа, так как у него его нет. Он возвращается как queryString.
Не могли бы вы, пожалуйста, сообщить кому-нибудь, где это исправить, либо ajax, либо мой код c #
Спасибозаранее
таким образомч