MVC'de, nasıl bir dize sonucu döndürürüm?


630

AJAX çağrımda, arama sayfasına bir dize değeri geri dönmek istiyorum.

ActionResultBir dize kullanmalı mıyım yoksa sadece döndürmeliyim?


4
kontrol Burada etmek önyükleme uyarı mesajı döndürür
shaijut

Yanıtlar:


1074

Yalnızca ContentResultdüz bir dize döndürmek için kullanabilirsiniz :

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

ContentResultvarsayılan text/plainolarak a'yı contentType olarak döndürür . Bu yüklenebilir, böylece şunları da yapabilirsiniz:

return Content("<xml>This is poorly formatted xml.</xml>", "text/xml");

Dönüş türünüz bir dize ise contentType nedir?
user1886419

7
Bu cevap o zamanlar ne kadar doğru bilmiyorum, ama şu anda yok ContentResultmu if (!String.IsNullOrEmpty(ContentType))batmasından önce HttpContext.Response.ContentType. text/htmlİlk örneğinizle görüyorum , ya şimdi bu varsayılan ya da tarafından eğitimli bir tahmin HttpContext.
user247702

Görünümde Nasıl Erişebilirim?
Pradeep Kumar Das

4
Küçük ekleme: Kelimenin tam anlamıyla bir dize olarak "text / plain" eklemek yerine, MediaTypeNames.Text.Plainveya gibi bir .NET çerçeve sabiti kullanabilirsiniz MediaTypeNames.Text.Xml. Her ne kadar sadece en çok kullanılan MIME türlerinden bazılarını içermesine rağmen. ( docs.microsoft.com/en-us/dotnet/api/… )
Doku-so

Up oy, gerçi ben @Stijn yorum başına metin olarak HTML döndürürken MIME türü "metin / düz" olarak belirtmek gerekiyordu.
Roberto

113

Ayrıca, yöntemin döndüreceği tek şey olduğunu biliyorsanız dize döndürebilirsiniz. Örneğin:

public string MyActionName() {
  return "Hi there!";
}

10
Phil, bu bir "En İyi Uygulama", cevabınız ve @swilliam'ın
David Perlman

9
ActionResult döndüren bir yöntemden dize döndüremezsiniz, bu durumda swilliams açıklandığı gibi Content ("") döndürürsünüz. Sadece bir dize döndürmeniz gerekiyorsa, Phil'in açıkladığı gibi, yöntem bir dize döndürür.
Arkiliknam

3
Aynı eylemi varsayarak birden sahip returnya göndermek için kullanılan ifadeler stringya JSONya Viewo zaman kullanmalıdır koşullarına dayalı Contentdize dönmek için.
DhruvJoshi


0
public JsonResult GetAjaxValue() 
{
  return Json("string value", JsonRequetBehaviour.Allowget); 
}

0

2020 itibariyle, yukarıda belirtilen şekilde kullanım ContentResulthala doğru bir yaklaşımdır , ancak kullanım aşağıdaki gibidir:

return new System.Web.Mvc.ContentResult
{
    Content = "Hi there! ☺",
    ContentType = "text/plain; charset=utf-8"
}

-1

bir dizeyi denetleyiciden görünüme döndürmenin 2 yolu vardır

ilk

sadece dize döndürebilir ama html dosyasına dahil edilmeyecektir jus dizesi tarayıcıda görünecektir


ikinci

bir dizeyi Görüntüleme Sonucu'nun nesnesi olarak döndürebilir

İşte bunu yapmak için kod örnekleri

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

    }
}

görünümünde AutoProperty çalıştırmak dosya Sonuç görünümüne yönlendirir ve görüntülemek için s
kodu gönderir

<!--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>

i de çalıştırın http: // localhost: 60227 / Ev / AutoProperty

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.