【问题标题】:On html.actionlink click, load a partial view below the link点击 html.actionlink,在链接下方加载部分视图
【发布时间】:2013-08-16 03:56:58
【问题描述】:

目前在我的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 中。

这里是controller中的方法,就是调用链接的时候调用的

[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>

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

【问题讨论】:

  • 我喜欢命名参数的想法。

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


【解决方案1】:

您可以为此使用 ajax 助手

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

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

包含 jquery 时,请使用 1.9 之前的版本,否则脚本将无法运行。如果您需要 jquery 1.9+ 的版本,请将 jquery.migrate 包从 nuget 添加到您的项目中,并将其加载到您的布局中。

【讨论】:

  • 你说的我试过了,还是不行。您可以在编辑 1 中看到结果
  • 这行不通` @Scripts.Render("~/js") @RenderSection("Scripts", required: false)`
  • 渲染部分只允许视图将内容呈现到该区域(只有完整视图,没有 ajax 加载的部分使用它); @Scripts 只是渲染出那个包的内容。您将需要检查其中包含哪些脚本。如果您使用 chrome,另一个等待检查是查看网络选项卡,看看它是否通过 ajax 请求它
  • AjaxOptions 缺少大括号 {},这将导致 UpdateTgetId 不存在
猜你喜欢
  • 2015-01-17
  • 2015-05-30
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多