Контроллер MVC возвращает «HTML-данные» вместо представления - PullRequest
2 голосов
/ 02 февраля 2010

У меня есть контроллер модуля, который возвращает (отображает) страницу просмотра (.aspx) на страницу main.aspx

, но теперь я хочу, чтобы контроллер возвращал весь контент страницы .aspx в javascriptфункция, из которой этот контроллер был вызван

pls help

моя вызывающая функция в main.aspx

    $.get('/Module/Select/',
        { TemplateName: TemplateName }, function(result) {
            alert(result);
 });

мой контроллер

 public ActionResult Select(string TemplateName)
    {

return View(TemplateName);           

    }

itдолжен возвращать содержимое TemplateName в функцию (результат) {....}

Ответы [ 4 ]

2 голосов
/ 02 февраля 2010

Вам необходимо выполнить асинхронный (ajax) вызов действия контроллера и передать объект как JSON. В функции обратного вызова success просто оцените результат, и вы получите свой объект.

$("#yourButtonId").click(function(ev) {
  ev.preventDefault();

  $.get('/Module/Select/',
    { TemplateName: TemplateName }, function(result) {
        var myObject = eval('(' + result + ')');
        alert(myObject);
 });
});

В вашем контроллере проверьте, является ли запрос запросом ajax, и верните объект как JSON.

public ActionResult Select(string TemplateName)
{
    if (Request.IsAjaxRequest())
    {
        return Json(TemplateName);
    }
    return View(TemplateName);           
}

Таким образом, ваше действие будет работать с запросами ajax и non-ajax.

1 голос
/ 05 февраля 2010

Мне нужно было сделать странные вещи. Я определил по страницам, где мне просто нужно содержимое, как частичное представление.

Вы Jquery можете затем получить или POST к действию контроллера, которое может вернуться следующим образом:

return PartialView("ViewName", model);

Это также может быть строго типизировано для модели.

В результате переменная результата в вашей функции обработки JQuery будет содержать только HMTL, который вам нужен.

0 голосов
/ 04 февраля 2010

Вы также можете использовать:

 $.load('/Module/Select/',
    { TemplateName: TemplateName },function(result) {
        alert(result); });
        });

Надеюсь, это то, что вы ищете:)

0 голосов
/ 04 февраля 2010

Что вы получаете от звонка?

  $.get('/Module/Select/',
    { TemplateName: TemplateName }, function(result) {
        alert(result); });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...