Визуализация представления в виде строки при выполнении Ajax-запроса на просмотр - PullRequest
0 голосов
/ 22 марта 2010

Мои представления отображаются для маршрутизации запросов, таких как / controller / action (например, / Page / Create), поэтому довольно классическая.

Я создаю форму, в которой представление будет загружаться через AJAX-запрос с помощью jQuery get (), поэтому, по сути, мне нужны мои Views или, если быть точным, действия моего контроллера, для возврата простой строки HTML, когда AJAX-запрос сделан маршрут, который делает представление. Я хочу использовать те же представления, что и для обычных запросов, поэтому я не могу позволить себе создавать какие-либо новые представления.

Это что-то вроде вызова RenderPartial ("MyViewUserControl"), но внутри кода JS.

Ответы [ 3 ]

0 голосов
/ 22 марта 2010

Здесь нет ничего особенного, что вам нужно сделать - просто запросите ваши методы действий с помощью .get (), как обычно, и установите тип ответа "html".

$.get('<% Url.Action("MyActionMethod") %>', { },
   function(data){
     alert("Data Loaded: " + data);
   },
   "html")
0 голосов
/ 23 марта 2010

Мой ответ основан на ответе SLAks - я архивирую его для дальнейшего использования или для помощи кому-то еще.

Это моя структура:

1) Create.aspx (ViewPage) использует RenderPartial ("Tab-CreateEditForm") для визуализации формы создания / редактирования, которая 2) Tab-CreateEditForm.ascx (частично) 3) Создать действие, которое определяет, какой тип запроса делается. Если мы делаем запрос AJAX, мы, вероятно, не хотим отображать Create.aspx, который по умолчанию, а вместо этого вместо этого выводим Tab-CreateEditForm, потому что он содержит только тег и поля form и директивы страницы NO, head, title и все остальные элементы, которые находятся в Create.aspx.

Итак, действие выглядит так:

    //
    // GET: /Tab/Create/{tabGroupSlug}
    [CanReturnModalView]
    [Authorize(Roles = "Administrators")]
    public ActionResult Create(string tabGroupSlug)
    {
        Tab tab = new Tab();
        if (Request.IsAjaxRequest())
            return View("Tab-CreateEditForm", tab); // returns partial

        return View(tab); // returns Create.aspx 
    }

И это мое действие Edit, которое также использует ту же технику, потому что представление Edit (страница Edit.aspx) также использует тот же частичный элемент управления редактирования.

    //
    // GET: /Tab/Edit/{slug}
    [CanReturnModalView]
    [Authorize(Roles = "Administrators")]
    public ActionResult Edit(string slug)
    {
        Tab editing = (Tab) _repository.GetInstance(slug);
        if (Request.IsAjaxRequest())
            return View("Tab-CreateEditForm", editing); // returns partial

        return View(editing); // returns Edit.aspx
    }
0 голосов
/ 22 марта 2010

Вам необходимо переместить строки HTML в частичные представления, затем включить частичные представления в ваши обычные представления (если применимо) и отобразить частичные представления в ваших действиях.

Возможно, вы захотите использоватьRequest.IsAjaxRequest() метод расширения в действиях.

Чтобы получить HTML в Javascript, вы можете сделать нормальный AJAX-запрос к URL-адресу действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...