使用按钮上的部分视图更新DIV单击(动态)

时间:2016-08-27 21:58:01

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

所以我想做一些几乎与你在这里找到的事情: http://www.makeitspendit.com/calling-asp-mvc-controllers-from-jquery-ajax/

它将完全按照我的意愿行事,但为所有4个按钮写出相同的脚本并不是很干。 (好吧,根本不干)

我希望有一个脚本根据按钮的ID调用正确的视图,这样代码只需要在我的页面上一次。 我尝试将this.id传递给函数调用,并在" url:"中使用连接。 ajax电话的属性,但不起作用。
实施例:

<div id="projectDiv">

<button onclick="loadProject(this.id)" id="_Project1">Project 1</button>
<button onclick="loadProject(this.id)" id="_Project2">Project 2</button>

<script>    
    function loadProject(projectID) {
          $.ajax({
            url: ("/Projects/Project/"+projectID),
            datatype: "text",
            type: "POST",
            success: function (data) {
              $('#projectDiv').html(data);
            },
          });
        });
</script>

在控制器中:

[HttpPost]
public ActionResult Project(string id)
{
    return View(id);
}

我已经为此搜索并发现了类似的东西(但不足以得到我需要的东西)但是找不到这种情况 - 我认为这种情况很常见获得更多信息。

示例代码说明了我希望它如何工作,但我似乎无法将变量传递到url属性中。虽然我不熟悉ASP.NET MVC,但这似乎应该是非常基础的,但我已经坚持了一分钟。

1 个答案:

答案 0 :(得分:1)

我知道此帖已经超过一年了,但我想根据对原始问题的评论添加一个更完整的答案,以防其他像我这样的人偶然发现它。

在我的/Views/Shared/文件夹中,我有_YourPartialName.cshtml

HomeController.cs我有:

[HttpPost]
public PartialViewResult AddPartialToView(string id)
{
    return PartialView(id);
}

MainView.cshtml我有:

...
<div id="placeHolderDiv">          
</div>

<div class="form-group">
    <button class="btn" type="button" onclick="replaceContentsOfDiv(this.id)" id="_YourPartialName">Add A Partial View Above This</button>
</div>
...
<script>
    function replaceContentsOfDiv(partialViewToInsert) {
        $.ajax({
            url: '@Url.Action("AddPartialToView", "Home")',
            data: { id: partialViewToInsert},
            type: "POST",
            success: function(data) {
                $('#placeHolderDiv').html(data);
            }
        });
    }
</script>

这将导致:

<div id="placeHolderDiv">
    <whatever class="you had in your partial">
    </whatever>
</div>



希望这会有所帮助。