В MVC, как я могу вернуть строковый результат?

524

В моем вызове AJAX я хочу вернуть строковое значение на вызывающую страницу.

Должен ли я использовать ActionResult или просто вернуть строку?

  • 3
    отметьте здесь, чтобы вернуть сообщение о загрузке
Теги:
asp.net-mvc
actionresult

5 ответов

893
Лучший ответ

Вы можете просто использовать ContentResult, чтобы вернуть простую строку:

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

ContentResult по умолчанию возвращает a text/plain как contentType. Это перегружает, поэтому вы также можете:

return Content("<xml>This is poorly formatted xml.</xml>", "text/xml");
  • 0
    Что такое contentType, если ваш возвращаемый тип - строка?
  • 7
    Я не знаю, насколько точным был этот ответ тогда, но в настоящее время ContentResult делает if (!String.IsNullOrEmpty(ContentType)) до установки HttpContext.Response.ContentType . Я вижу text/html с вашим первым примером, либо это сейчас значение по умолчанию, либо это HttpContext предположение HttpContext .
Показать ещё 3 комментария
108

Вы также можете просто вернуть строку, если знаете, что единственное, что метод когда-либо будет возвращать. Например:

public string MyActionName() {
  return "Hi there!";
}
  • 10
    Фил, это "Лучшая практика", не могли бы вы объяснить разницу между вашим ответом и @swilliam
  • 9
    Вы не можете вернуть строку из метода, который возвращает ActionResult, поэтому в этом случае вы возвращаете Content (""), как объяснено в swilliams. Если вам когда-нибудь понадобится вернуть строку, то у вас будет метод, возвращающий строку, как объяснил Фил.
Показать ещё 1 комментарий
4
public ActionResult GetAjaxValue()
{
   return Content("string value");
}
  • 8
    лучше объяснить больше во время ответа
1
public JsonResult GetAjaxValue() 
{
  return Json("string value", JsonRequetBehaviour.Allowget); 
}
0

есть 2 способа вернуть строку из контроллера в представление

первый

вы можете вернуть только строку, но не включаться в html файл в строке браузера будет отображаться строка jus


второй

может возвращать строку как объект вида Result

вот примеры кода для этого

public class HomeController : Controller
{
    // GET: Home
    // this will mreturn just string not html
    public string index()
    {
        return "URL to show";
    }

    public ViewResult AutoProperty()
    {   string s = "this is a string ";
        // name of view , object you will pass
         return View("Result", (object)s);

    }
}

в режиме просмотра AutoProperty он перенаправит вас в представление Результат и отправит s
код для просмотра

<!--this to make this file accept string as model-->
@model string

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Result</title>
</head>
<body>
    <!--this is for represent the string -->
    @Model
</body>
</html>

Я запустил его на http://localhost:60227/Home/AutoProperty

Ещё вопросы

Сообщество Overcoder
Наверх
Меню