Вопрос по razor, asp.net-mvc-3 – Динамически загружать частичные представления

20

Как я могу динамически загрузить частичное представление?

Я имею в виду это мнение, скажемListProductsтам я выбираю несколько выпадающих списков с продуктами и т. д., и с выбранными значениями из тех, которые я хочу заполнить частичным представлением, которое будет в невидимом элементе div, но послеonchange() Событие станет видимым и с данными от определенных выбранных элементов.

Ваш Ответ

6   ответов
0

как сделать это с минимальным JavaScript. По сути, вы возвращаете html вместо JSON в ваш объект ответа.

https://www.simple-talk.com/content/article.aspx?article=2118

4

выполнив следующие действия. В вашем контроллере вы возвращаете частичное представление.

    [HttpGet]
    public virtual ActionResult LoadPartialViewDynamically()
    {
        var query = _repository.GetQuery();
        return PartialView("_PartialViewName", query);
    }

тогда в представлении у вас есть пустой div

<div id="partialgoeshere"></div>

и затем загрузите частичное представление, используя jQuery:

function LoadPartialView() {

    $.get("@Url.Action(MVC.ControllerName.LoadPartialViewDynamically())", { null }, function (data) {

        $("#partialgoeshere").empty();
        $("#partialgoeshere").html(data);

    });

}

Надеюсь это поможет

1

этот пример, просто используя событие изменения в вашем раскрывающемся списке. Это простой вызов jQuery, вы можете найти больше наJQuery Веб-сайт.

$("#dropdown").change(function() {

    $("#destination").load("/Products/GetProduct", $(this).val(),
       function(result) {
         // do what you need to do

       });
});

Первый параметр - это представление, которое необходимо вызвать для получения подробной информации.

Второй параметр - это выбранное значение.

Третий параметр$.load Функция является функцией обратного вызова, где вы можете проанализировать результат и сделать то, что вам нужно сделать.

Если у вас есть множественный выбор$(this).val() это даст вам массив с выбранными параметрами.

Если вы хотите вернуть только объект Json, вы можете следоватьэтот пример.

0

http://api.jquery.com/jQuery.ajax/

Пример:

$.post(window.gRootPath + "Customer/PartialView", { Question: questionId})
.done(function (data) {
    $('#partialDiv').html(data.responceText);
});
22

$ .Load () с действием контроллера, который возвращает частичное представление.
Например:

HTML
<script type="text/javascript">
$(document).ready(function()
{
    $("#yourselect").onchange(function()
    {
        // Home is your controller, Index is your action name
        $("#yourdiv").load("@Url.Action("Index","Home")", { 'id' : '123' }, 
                                        function (response, status, xhr)
        {
            if (status == "error")
            {
                alert("An error occurred while loading the results.");
            }
        });
    });
});
</script>

<div id="yourdiv">
</div>
Controller
public virtual ActionResult Index(string id)
{
    var myModel = GetSomeData();
    return Partial(myModel);
}
View
@model IEnumerable<YourObjects>

@if (Model == null || Model.Count() == 0)
{
    <p>No results found</p>
}
else
{
    <ul>
    @foreach (YourObjects myobject in Model)
    {
        <li>@myObject.Name</li>
    }
    </ul>
}
@ H & # xE9; lderGon & # xE7; alves Я обновил anser, чтобы показать пример
Тай, это работает .. у меня просто возникают проблемы с передачей некоторых данных, бросаем @ Url.Action (), какой синтаксис для передачи параметров теперь остается, используя эту загрузку из jQuery Hélder Gonçalves
0

а затем просто вставьте html-строку, используя jQuery, на страницу, где вы хотите, чтобы она появилась:

Server-side:

Визуализация частичного представления в строку Отображает частичное представление на сервере в виде строки html, полезно, когда вам нужно добавить частичное представление на страницу ASP.NET MVC через AJAX.

Client-side:

$('#yourDdl').change(function()
{
  $.get('/InsertPartialViewUsingAjax', function (data) 
  {
     $('#container').html(data);
  });
});

Похожие вопросы