将字符串数组从jQuery传递到asp.net razor语法网站,并在服务器端代码中接收它

时间:2014-09-11 01:12:02

标签: jquery asp.net razor

我有一个剃刀语法的VS2012网站。我有一些div,包含文本段落。我通过以下jQuery使它们可编辑:

   if (cmsAuthenticated==true) $(".cmsClass").prop('contentEditable', true);

登录用户现在可以编辑它们。编辑这些div后,用户点击提交按钮。

问题:对于每个可编辑的div,我想将以下信息集传递给服务器端代码:

  • 内容:用户刚编辑的div的内容
  • FileName:我将更新新编辑数据的文本文件的名称。例如' Page1_Text05.txt'
  • 路径:更新文件的路径。例如' CMS / TEXTFILES /'

我有以下razor代码块,它将编辑内容保存在适当的文件中:

@{
    if (IsPost)
    {
        //Here I will put the code after your kind help to catch the array sent from jQuery
        //Lets suppose I received the data in array named 'DivData' which have 3 columns contents,path,filename for each editable div on the page.

        for(i=0; i<DivData.length; i++)
        {
            File.WriteAllText(Server.MapPath("~/" + DivData[i][1] + DivData[i][2]), DivData[i][0]);
            //e.g. DivData[i][1] is "cms/TextFiles/"
            //e.g. DivData[i][2] is "Page1_Text05.txt"
            //e.g. DivData[i][1] is "Some edited content entered by the user"
        }
    }
}

P.S。 请注意,其他所有内容都在我的网站上运行。我已经测试了一个成功的“写作”和#39;单个文件,因为我通过隐藏的字段值将内容从jQuery传递给csharp。但是当我有x个div并且每个都有3组信息时,问题就出现了。

请帮助

1 个答案:

答案 0 :(得分:0)

我没有你的html摘录。

但是,如果你有多个文件的记录(div数组) - 我想你会做这样的事情:

var files= []; // create array here
var divarray = $("#divID");
$.each(divarray, function (index, div) {
         var jsonData = {
                    'Name': div.Name,
                    'Path': div.Path,
                }
        files.push(jsonData); //push values here
    });

然后你可以传递一个字符串。

        jsonData = JSON.stringify(files);

我在这里假设您正在使用带有AJAX调用的jQuery。

  $.ajax({
                        url: "/mvccontroller path", //make sure the path is correct
                        cache: false,
                        type: 'POST',
                        data: jsonData,
                        success: function (response) {
...