将所选项目ID传递到局部视图

时间:2014-04-05 11:26:17

标签: ajax asp.net-mvc-3 partial-views

我正在构建一个页面,用户可以在其中查看他/她选择的项目的详细信息。

作为此项目的一部分,我需要使用Ajax和部分视图显示此特定项目下列出的所有注释。

Controller课程中,我无法将所选项目的productID传递给局部视图方法。当我将productID硬编码到方法中时,注释会显示出来,但是当我通过参数传递它时,该方法甚至不会触发。

但是,所有产品详细信息都没有限制。

我将不胜感激任何帮助。请在下面找到我Controller

中的代码
    public ActionResult Index()
    {
        List<Product> productList = new ProductClient().GetAllProducts().ToList();
        return View("Index", productList);
    }


    //This method works correctly.  The id of the product is passed.
    public ActionResult Details(int id)
    {
        return View(new ProductClient().GetProductByID(id));
    }


    // This method is not even getting triggered.
    public PartialViewResult ProductComments(int id)
    {
        List<Comment> commentList = new ProductCommentClient().GetCommentsByProductID(id).ToList();
        return PartialView("_comments", commentList);
    }

这是我的Details.cshtml

@Ajax.ActionLink("Product Comments", "ProductComments(" + @Model.ID + ")", new   AjaxOptions
{
HttpMethod = "Get",
UpdateTargetId= "divComments",
InsertionMode = InsertionMode.InsertAfter
})

<fieldset>
<div id="divComments">
    <legend>Comments</legend>
</div>
</fieldset>

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。

@Ajax.ActionLink("Product Comments", "ProductComments", new {id=Model.ID}, new   AjaxOptions
{
    HttpMethod = "Get",
    UpdateTargetId= "divComments",
    InsertionMode = InsertionMode.InsertAfter
})

<fieldset>
    <div id="divComments">
        <legend>Comments</legend>
    </div>
</fieldset>

我以错误的方式传递了ID。我希望这至少可以帮助别人。