mvc 3 razor вызывает функцию на стороне сервера, используя jquery - PullRequest
2 голосов
/ 27 мая 2011

Я использую этот код для получения частичного представления с сервера или не помещаю его в div

    $.ajax(
    {
        type: "POST",
        url: "MyControler/MyAction",
        success: function (result) {
            $('#partialView').html(result);      
        },
        error: function (req, status, error) {
            alert("Coudn't load partial view");
        }
    });

Теперь я хотел бы сделать то же самое, но я бы назвал простой метод возвратастроку и поместите результат в текстовое поле

    $.ajax(
    {
        type: "POST",
        url: "MyControler/MyMethod",
        success: function (result) {
            $('#myTextBox').html(result);      
        },
        error: function (req, status, error) {
            alert("Coudn't load partial view");
        }
    });

метод будет таким:

    public string MyMethod()
    {
        returning "hello";
    }

, очевидно, он не работает, но есть ли способ заставить его работать ??есть ли атрибут, который я должен использовать для метода

заранее спасибо

ps:

из того, что я красный в первом ответе, я попробовал это, но это не работает

    public ActionResult Hello()
    {
        return Content("Hi there!");
    }

что-то не так с вызовом ajax ??

$.ajax(
    {
        type: "POST",
         url: "MyControler/Hello",
        success: function (result) {
            $('#myTextBox').html(result);      
     },
    error: function (req, status, error) {
        alert("Coudn't load partial view");
    }
});

ps

Я хотел попробовать чистый проект, и он работал нормально, используя простойметод, возвращающий строку

, так как она работала, я пытался внедрить ее в свой проект, но кажется, что она работает только со стартовой страницы, настроенной в файле global.asax, любая идея, что я должен сделать, чтобы заставить ее работатькаждые страницы ???

Ответы [ 4 ]

3 голосов
/ 14 августа 2012

Вы делаете HttpPost звонок. Поэтому убедитесь, что ваш метод Action имеет атрибут HttpPost. Также всегда старайтесь использовать Url.Action метод HTML Helper для пути к методу действия.

Приведенный ниже код должен работать, при условии, что у вас есть Hello метод действия, присутствующий в MMyControlerController.

$.ajax(
        {
         type: "POST",
         url: "@Url.Action("Hello","MyControler")",
         success: function (result) {
             alert("result from server "+result);
             $('#myTextBox').html(result);      
         },
        error: function (req, status, error) {
            alert("Coudn't load partial view");
        }
});

Ваш метод действия

[HttpPost]
public ActionResult Hello()
{
  return Content("This is String Content");
}
1 голос
/ 19 марта 2013

Я думаю, вы должны использовать следующие

$('#myTextBox').attr('value',result); 

вместо

$('#myTextBox').html(result); 
0 голосов
/ 27 мая 2011

Лучше использовать метод Url.Action в тех случаях, когда вы работаете в виртуальном каталоге или поддомене. Метод Action создаст правильный URL.

Кроме того, похоже, что вы размещаете сообщение на сайте, поэтому вы добавили атрибут HttpPost в свое действие?

0 голосов
/ 27 мая 2011

Вы хотите вернуть строку из этого метода, да, но вам нужен ActionResult, который возвращает строку Проверьте следующий вопрос и ответ на StackOverflow.

Как мне вернуть строковый результат в MVC?

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