部分视图不是从控制器呈现的?为什么?

时间:2013-12-17 09:29:18

标签: jquery ajax asp.net-mvc partial-views renderpartial

这是根据我的问题:

How to pass array created from jQuery to controller method?

这是我的控制器返回局部视图:

     public ActionResult PartialViewChild(int id)
     {
    //stmts /*model is assigned here */
    return PartialView("ChildPartialView", model);
     }

我现在的问题是,我的控制器操作返回的视图不会被$.ajax()调用呈现。我已经在成功函数中放了一个调试器,它从来没有打到那里。所以,偶然的,我在ajax调用中添加了一个错误函数,如

        var id=currentSelected.Id;
        $.ajax({
        url: "@(Url.Action("PartialViewChild", "ControllerChild")",
        type: "POST",
        data: JSON.stringify({id : id}),
        cache: false,
        success: function (result) {
        $("#id1").html(result);
        },
         error: function (data, errorThrown) {
         alert('request failed :' + errorThrown);
         }});

我还发现,id为“id1”的div必须为空才能正确呈现局部视图。但是,开头的div会呈现一个像EmptyView一样的

       <div id="id1">
       @{Html.RenderPartial("ChildPartialView", new ChildPartialModel());}        
       </div>

并且基于ajax调用,我想用返回的结果填充该div(现在所有的属性都有值)。 但是,不幸的是,在这里我只是从ajax调用中得到错误警告:()告诉我有一个“解析错误”。

有人可以告诉我怎样才能纠正它?

修改

这是我的部分视图:

    @model Models.ChildColumnsModel
    <div>
    <span>@Html.LabelFor(c => c.Phone_Number):</span>
    <span>@Html.TextBoxFor(c=> c.Phone_Number)</span>
    </div>
    // like this it has all its attributes...

并在我的控制器中:

    public PartialViewResult PartialViewChild(int id)
     {
     var model=child.GetReletedInfo(id); /*proper results are returned here which is of ChildColumnsModel type */
     return PartialView("ChildPartialView", model);
     }

2 个答案:

答案 0 :(得分:0)

编辑:

试试这个:

[HttpPost]
public ActionResult ChildPartialView(int id)
 {
    //stmts /*model is assigned here */
    return PartialView(model);
 } 

答案 1 :(得分:0)

抱歉所有......我解决了这个问题。我有一个额外的属性为ajax告诉它的dataType:“Json”......当我删除它时,一切都很精细..我自己多么愚蠢..?!!谢谢大家的有价值的答案和时间朋友..