Mvc 3 razor вызывает функцию на стороне сервера, используя jquery

Я использую этот код, чтобы получить частичный вид с сервера, и поставьте его в 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";
    }

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

заблаговременно

пс:

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

    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");
    }
});

пс

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

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

+2
источник поделиться
4 ответа

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

Приведенный ниже код должен работать, если у вас есть метод Hello Action, присутствующий в 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");
}
+3
источник

Думаю, вам следует использовать следующие

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

вместо

$('#myTextBox').html(result); 
+1
источник

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

В MVC, как мне вернуть результат строки?

0
источник

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

Кроме того, похоже, что вы отправляете POST на сайт, добавили ли вы атрибут HttpPost к вашему действию?

0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос