Ajax调用部分视图不绑定MVC3

时间:2014-02-04 12:15:24

标签: c# jquery ajax asp.net-mvc-3

我从下拉菜单中选择一个项目,然后点击添加=> ajax调用一个返回JsonResult的方法,这一切都好。然后这个数据应该发送到服务器端的另一个函数PartialViewResult:public PartialViewResult _SkupinaRow(skupinaRow skupinaRow),它生成一个带有一些文本框和标签的新tr。我的问题是没有绑定。我在_SkupinaRow(skupinaRow skupinaRow)中调试时得到Null

我定义了以下域模型:

  public class skupinaRow
{

   public BONUSMALUS bonusmalus { get; set; } //items 
   public KOLEDAR koledar { get; set; } //calendar

}

部分视图:

 @model ObracunPlac.ViewModel.skupinaRow

 @Html.HiddenFor(x => x.bonusmalus.bon_id)

.....

部分查看代码:

  public PartialViewResult _SkupinaRow(skupinaRow skupinaRow)
    {
        return PartialView("_SkupinaRow", skupinaRow);
    }

Ajax Call:

    $("#addItemPrihodki").live("click", function () {

    var id = $("#prihodkidodaj option:selected").val()

    var skupinaRow = {
        bonusmalus:{},
        koledar:{}
    }

    jQuery.getJSON("/Placa/getBonusMalus/?id=" + id, function (data) {
    console.log("JSON Data: " + data.koledar.kol_id);

        skupinaRow.koledar.kol_id = data.koledar.kol_id,  //ok

        skupinaRow.bonusmalus.bon_id = data.bonusmalus.bon_id,  //ok




        //alert(JSON.stringify(GetBonusMalusModel($("#bonusdodaj option:selected").val())));
       alert(JSON.stringify(data));
       // alert(skupinaRow.serialize());

        $.ajax({
            url: "../_skupinaRow",
            cache: false,
            data: JSON.stringify(skupinaRow),
            //data: JSON.stringify(data),
            datatype: JSON,
            success: function (html) {
                $("#editorRowPrihodki table tr#dodajNov").before(html);
                  }
               ,
            error: function (XMLHttpRequest, textStatus, errorThrown) {
               alert('error'+"+++"+textStatus+"--- "+errorThrown);      
        },

        });

    });

    return false;
});




    public JsonResult getBonusMalus(int id)
{

    KOLEDAR koledar = db.KOLEDAR.Single(r => r.kol_id == KoledarID); 
    BONUSMALUS bm = db.BONUSMALUS.Single(r => r.bon_id == id);
    skupinaRow model = new skupinaRow
    {             
    koledar =koledar,
    bonusmalus = bm           
              };

    // return Json result using LINQ to SQL 

    return new JsonResult
    {
        JsonRequestBehavior = JsonRequestBehavior.AllowGet,
        Data = model
    };
}

调试图片:https://www.dropbox.com/s/189q080irp0ny77/1.jpg

当我有一个模型bonusmalus但现在我有两个所以我创建了modelView。

如何使用强类型SkupinaRow将ViewModel-SkupinaRow绑定到部分视图?

1 个答案:

答案 0 :(得分:0)

如果您只使用AJAX将其值转换为json?然后你可以使用这种方法

将具有正常回发的表单设置回控制器中的Action

在你的视图中使用jQuery并在提交表单时写下这个。

$("form").submit(function(){           
            $("#DropDown_Items").val(JSON.stringify(data));
        });

现在您可以在Action方法中使用它。