如何从razor视图回发字符串数组到MVC控制器?

时间:2014-12-18 09:51:32

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

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

@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
  }

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

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

$("#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'\\]"

进行转义

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

答案 1 :(得分:0)

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