【问题标题】:How to post back array of strings from razor view to MVC controller?如何将字符串数组从剃刀视图回传到 MVC 控制器?
【发布时间】:2015-02-17 01:36:53
【问题描述】:

我在视图中获得了一个输入文本框标签的字符串数组,但无法将其发布回控制器 我的代码看起来像这样, 为了可读性省略了不必要的代码

@using (Html.BeginForm("", "", FormMethod.Post, new { id = "frmCivilSurveys" }))
{

 <tbody class="subcategory" id="actualmeasure">

                <tr>
                    <td>

                    </td>
                    <td colspan="3">
                        <input type="button" class="k-button" value="Add" style="float: right;" id="AddNewActualMeasure" />
                    </td>
                </tr>

            </tbody>
<script>

    $("#btnSubmitCivilSurvey").click(function() {

        if ($("#frmCivilSurveys").valid())
        {

                $.ajax(
                {
                    type: "POST",
                    url: "@Url.Action("CivilPostSurvey", "PostSurveyCivils")?ActivityID=" + $("#iPActivityID").val() ,
                    data: JSON.stringify($('#frmCivilSurveys').serializeObject()),
                    dataType: "json",
                    contentType: "application/json; charset=utf-8",
                    async: true,
                    cache: false,
                    success: function (data)
                    {  
                        alert(data.Status);
                        var grid = $("#divSurveyGrid").data("kendoGrid");
                        grid.dataSource.read();
                        var win = $("#divEditSurvey").data("kendoWindow");
                        win.close();

                    }

                });


        }
        else
        {

            alert($("#frmCivilSurveys").validate().errorList[0].message);
            $($("#frmCivilSurveys").validate().errorList[0].element).focus();
        }
        return false;
    });

//这是负责通过jquery创建字符串输入文本框数组的代码

var m = 1;
$("#AddNewActualMeasure").click(function () {

           $("#actualmeasure").append(' <tr> <td>Measure ' + m + ' </td><td>C/W<input       type="text" id="CWActualMeasure[' + m + ']" name="CWActualMeasure[' + m + ']"/></td>     <td >F/W <input type="text"  id="FWActualMeasure[' + m + ']" name="FWActualMeasure[' + m + ']"/></td> </tr>'); //add  input box
             m++; 
        });
</script>
}

我的控制器方法如下所示

    [HttpPost]
    public ActionResult CivilPostSurvey(CivilsPostSurveyViewModel modelData, int ActivityID, string[] CWMeasure,string[] FWMeasure,string[] CWActualMeasure,string[] FWActualMeasure,FormCollection fc)
    {
  // save data 
  return null;//data saved message
  }

任何帮助将不胜感激

【问题讨论】:

  • 你发回什么?向您展示控制器方法
  • 集合索引器从 0 开始,而不是 1 - var m = 0;
  • 嘿,它解决了,非常感谢

标签: c# jquery html asp.net-mvc


【解决方案1】:

您好斯蒂芬您的编辑建议从 0 开始索引解决了我的问题。非常感谢

【讨论】:

    【解决方案2】:

    我看到一些语法错误(双 == 和缺少空格)

    $("#actualmeasure").append(' <tr> <td>Measure ' + m + ' </td><td>C/W<input       type="text"id=="CWActualMeasure[' + m + ']" name="CWActualMeasure[' + m + ']"/></td>     <td >F/W <input type="text" id=="FWActualMeasure[' + m + ']" name="FWActualMeasure[' + m + ']"/></td> </tr>');
    

    应该是

    $("#actualmeasure").append(' <tr> <td>Measure ' + m + ' </td><td>C/W<input       type="text" id="CWActualMeasure[' + m + ']" name="CWActualMeasure[' + m + ']"/></td>     <td >F/W <input type="text"  id="FWActualMeasure[' + m + ']" name="FWActualMeasure[' + m + ']"/></td> </tr>');
    

    更新

    尝试将tbody 标签更改为table 标签。
    我认为另一个问题应该是[] 的id。 用双反斜杠转义它
    "string\\['test'\\]"

    不需要转义序列来纠正错误,因为问题在于索引而不是语法

    【讨论】:

    • 不,我的问题仍然存在,我收到的只是空值,无论我在文本框中输入什么
    • 让我知道问题出在哪里
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多