MVC 部分视图按钮参数



单击按钮后,我正在尝试加载部分视图。每个按钮都有自己的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... 

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

更改链接(按钮)以包含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()方法返回分部视图。

最新更新