在html.actionlink上单击,在链接下方加载部分视图

时间:2013-08-14 09:16:58

标签: html asp.net-mvc asp.net-mvc-4 views partial-views

目前我的view这就是我所拥有的

<dt>Credit Saldo</dt>
<dd>@Model.CreditSaldo @Html.ActionLink("Add Credit","AddCredit",routeValues:new{Model.LicenseId})</dd> 
<br/>
<dd>
   <div id="partialDiv"></div>
</dd>

每当用户点击Add Credit时,目前它会将我转发到新的部分视图(毫不奇怪)。

我想要做的是在同一视图中加载部分视图,在ID为 partialdiv 的div中。

以下是控制器中的方法,即在调用链接时调用

[HttpGet]
public ActionResult AddCredit(Guid licenseid)
{
        var newCredit = new AddCredits();
        return PartialView(newCredit);
}

这就是我在局部视图中所做的事情

@model AdminPortal.Areas.Customer.Models.ViewModels.AddCredits

<div class="input-small">@Html.EditorFor(m=>m.CreditToAdd) <button class="btn-small" type="submit">Add</button></div>

如果点击链接“添加点数”,如何在同一视图中加载局部视图?

编辑1:尝试过的Ajax

<dt>Credit Saldo</dt>
            <dd>@Model.CreditSaldo &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Ajax.ActionLink("Add Credit","AddCredit",new{Model.LicenseId}, new AjaxOptions {UpdateTargetId = "partialDiv"})
            <br/>
            <dd>
               <div id="partialDiv"></div>
            </dd>

结果:部分视图仍然作为新视图加载(不在同一视图中)

1 个答案:

答案 0 :(得分:1)

您可以使用ajax助手

@Ajax.ActionLink("Add Credit","AddCredit",routeValues:new{Model.LicenseId}, new AjaxOptions {UpdateTagetId = "partialDiv"}, new {})

为了使这些工作正常,您需要确保在布局中加载jquery和jquery.unobtrusive-ajax。

当包含jquery时,使用pre 1.9版本或脚本将无法正常工作。如果您需要jquery 1.9+版本,请将nuget中的jquery.migrate包添加到您的项目中,并将其加载到您的布局中。