MVC 部分视图按钮参数

MVC Partial View Button Parameter

我正在尝试在单击按钮后加载局部视图。每个按钮都有自己的 commodityCode 值,因此一旦单击每个按钮,将在局部视图中生成不同的结果。

我的问题是,当单击按钮时,只返回部分内容。相反,我希望将部分内容进一步加载到按钮所在的同一页面上。我不能使用 ajax.load() Action 方法,因为我作为参数传递给部分控制器的变量是从 foreach(var item in Model.commodities) 代码中获取的(如下所示),我认为没有是一种通过 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... 

您生成的 link 将重定向到新页面。您需要使用 ajax 使用 TliSelect() 方法返回的部分视图更新当前页面。

更改 link(按钮)以包含 commodityCode 值的 data- 属性,以便它可以在您的脚本中存储和检索

<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() 方法 returns 是局部视图。