我试图在点击按钮后加载局部视图。每个按钮都有自己的commodityCode
值,因此一旦点击,每个按钮都会在局部视图中生成不同的结果。
我的问题是,当点击一个按钮时,部分是唯一被返回的东西。相反,我希望将部分进一步加载到按钮所在的同一页面上。我无法使用ajax.load()
Action方法,因为我作为参数传递给部分控制器的变量取自foreach(var item in Model.commodities)
代码(如下所示),我不知道#39;认为有一种方法可以通过foreach
循环将数据从模型传递到jQuery
然后传递给控制器。有没有办法让我在页面上指定部分视图应该使用C#而不是jQuery加载?
@foreach (var item in Model.commodities)
{
<tr>
<td>
<a class="arrow_button" href='@Url.Action("TliSelect", "Commodity", new { tariff = ViewBag.scac, commodityCode = item.commodityCode })'>
<img style="width:15px; height:15px;" src="@Url.Content("/Content/images/expand-sm.png")" />
</a>
</td> // Continued...
答案 0 :(得分:1)
您生成的链接将重定向到新页面。您需要使用ajax来更新当前页面,并使用TliSelect()
方法返回的部分视图。
更改链接(按钮)以包含data-
值的commodityCode
属性,以便在脚本中存储和检索
<a class="arrow_button" href="#" data-code="@item.commodityCode">....</a>
然后你的脚本将是
var url = '@Url.Action("TliSelect", "Commodity")';
var tariff ='@ViewBag.scac';
var container = $(yourElement); // the element where you want to append the partial
$('.arrow_button').click(function() {
var code = $(this).data('code');
container.load(url, { tariff: tariff, commodityCode: code });
});
或者如果您想继续附加部分内容,请将.load()
替换为
$.get(url, { tariff: tariff, commodityCode: code }, function(html) {
container.append(html);
});
请注意,这假设您的TliSelect()
方法返回部分视图。