Как я могу получить значение radioButton в FormCollection, используя ajax в MVC - PullRequest
0 голосов
/ 08 февраля 2019

Привет, у меня есть метод действия, у которого есть параметр 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 #

Спасибозаранее

таким образомч

1 Ответ

0 голосов
/ 08 февраля 2019

Значение переключателя может быть отправлено неправильно, возможно, потому что у вас есть два элемента с одинаковым идентификатором.Попробуйте дать уникальные идентификаторы для обеих кнопок-переключателей, как это

@Html.RadioButton("radioSource", "Yes", true, new { id = "radioMoveAllYes", data_toggle = "tooltip", data_placement = "right", title = "Click to select", htmlAttributes }) Yes

@Html.RadioButton("radioSource", "No", false, new { id = "radioMoveAllNo", data_toggle = "tooltip", data_placement = "right", title = "Click to select", htmlAttributes })  No

Это стоит попробовать хотя бы.В любом случае, у вас никогда не должно быть двух элементов с одинаковым идентификатором.

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