2017-01-10 2 views
0

Я пытаюсь загрузить частичный вид после нажатия кнопки. Каждая кнопка имеет собственное значение commodityCode, поэтому после каждого щелчка каждый будет генерировать разные результаты в частичном представлении.MVC Partial View Button Параметр

Моя проблема заключается в том, что при нажатии кнопки частичная часть возвращается. Вместо этого я хочу, чтобы частичная часть была загружена дальше на той же странице, на которой расположены кнопки. Я не могу использовать метод действия ajax.load(), потому что переменная, которую я передаю как параметр для частичного контроллера, берется из кода 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... 

ответ

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() возвращает частичный вид.

+0

Отличное решение. Спасибо. – Versatile