0

私はこの問題を抱えています。

  • 私は次のようにJavaScriptの配列を持っています:

    checkedItems = {"1000"、 "1001"、 "1002"}

  • この配列をC#コントローラーに送信する必要があります

  • コントローラがこの配列での作業を終了したら、PartialViewを返します
  • PartialViewがレンダリングされます

私はすべてを試しましたが、何も機能しません。

これは私のJavascriptです:

function getAllCheckedFirsts()
{
    var postIds = {
        data: []
    };

    var i = 0;
    $(":checked[id$='-first']").each(function (){
        var id = $(this).attr("id");
        var words = id.split("-");
        postIds.data.push(words[0]);
        i++;
    });

    $.post("/Home/getInfoAboutChecked", postIds);
}

これは私のコントローラーです:

[HttpPost]
public PartialViewResult getInfoAboutChecked(string[] data)
{
    List<EntityModel> model = new List<EntityModel>();
    if (data.Length != 0)
    {
        int id = 0;
        WSEntityInfo entity;
        WSPropertyInfo[] fids;
        foreach (var e in data)
        {
            id = Convert.ToInt32(e);
            entity = WSConnect.getEntityInfo(id);
            fids = WSConnect.getAllFidsAsWSPropertyInfo(id);
            model.Add(new EntityModel(entity, fids));
        }               
    }
    return PartialView("_EntitiesView",model);
}

しかし、それでもコントローラーのデータはNULLです。問題は何ですか?もう1つの質問は、htmlでレンダリングの場所をどこでどのように定義できるかです。手伝ってくれてありがとう

4

2 に答える 2

1
$.post("/Home/getInfoAboutChecked", JSON.stringify(postIds.data));

@Url.Action toリンクのレンダリングを使用して、ホームをコントローラー、他の部分をアクションと見なすことができます

$.post("@Url.Action("getInfoAboutChecked", "Home")", JSON.stringify(postIds.data));

コントローラは文字列の配列を想定しており、送信するのは、 $。post
も使用して文字列の配列であるプロパティを持つオブジェクトです。シリアル化して単純なオブジェクトを送信できますが、配列ではないため、を使用する必要があります。JSON.stringify

于 2013-02-23T21:27:42.360 に答える
0

これを行うにはおそらくもっと良い方法がありますが(私はJavaScriptにかなり慣れていません)、昨夜これを行うための関数型の方法をコーディングしました。

var opts = "";
$('#myForm input:checked').each(function (i, elem) {
    opts += this.value + ",";
});
var ajaxUrl = myUrl + "&opts=" + opts;

コントローラーでは、1つのパラメーターを期待していますstring ops。コントローラで、「、」の文字列を分割して、個々の値を取得します。

アップデート

あなたの投稿は次のようにHTMLを更新できます:

$.post("/Home/getInfoAboutChecked", postIds, function(data) {
  $('#idOfDivWhereResultShouldGo').html(data);
});
于 2013-02-23T21:24:38.603 に答える