W moim wywołaniu AJAX chcę zwrócić wartość ciągu z powrotem na stronę wywołującą.
Czy powinienem użyć ActionResult
czy po prostu zwrócić ciąg?
W moim wywołaniu AJAX chcę zwrócić wartość ciągu z powrotem na stronę wywołującą.
Czy powinienem użyć ActionResult
czy po prostu zwrócić ciąg?
Odpowiedzi:
Możesz po prostu użyć, ContentResult
aby zwrócić zwykły ciąg:
public ActionResult Temp() {
return Content("Hi there!");
}
ContentResult
domyślnie zwraca a text/plain
jako swój contentType . Jest to przeciążalne, więc możesz także:
return Content("<xml>This is poorly formatted xml.</xml>", "text/xml");
ContentResult
jest znana if (!String.IsNullOrEmpty(ContentType))
przed ustawieniem HttpContext.Response.ContentType
. Widzę text/html
z twoim pierwszym przykładem, który jest teraz domyślny, lub jest wykształconym zgadywaniem HttpContext
.
MediaTypeNames.Text.Plain
lub MediaTypeNames.Text.Xml
. Chociaż zawiera tylko niektóre z najczęściej używanych typów MIME. ( docs.microsoft.com/en-us/dotnet/api/… )
Możesz również zwrócić ciąg znaków, jeśli wiesz, że to jedyna rzecz, jaką metoda kiedykolwiek zwróci. Na przykład:
public string MyActionName() {
return "Hi there!";
}
return
twierdzeń, które są używane do wysyłania albo string
albo JSON
albo View
oparta na warunkach wtedy musimy użyć Content
, aby powrócić ciąg.
public ActionResult GetAjaxValue()
{
return Content("string value");
}
Począwszy od 2020 r. Używanie ContentResult
jest nadal właściwym podejściem, jak zaproponowano powyżej , ale użycie jest następujące:
return new System.Web.Mvc.ContentResult
{
Content = "Hi there! ☺",
ContentType = "text/plain; charset=utf-8"
}
istnieją 2 sposoby na zwrócenie ciągu z kontrolera do widoku
pierwszy
możesz zwrócić tylko ciąg znaków, ale nie będzie on zawarty w pliku HTML, będzie to ciąg znaków pojawiający się w przeglądarce
druga
może zwrócić ciąg jako obiekt View Result
oto przykłady kodu, aby to zrobić
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);
}
}
w widoku plików do uruchomienia AutoProperty będzie przekierowanie do Result widok i wyśle e
kod do widzenia
<!--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>
uruchamiam go na http: // localhost: 60227 / Home / AutoProperty