Di MVC, bagaimana cara mengembalikan hasil string?

630

Dalam panggilan AJAX saya, saya ingin mengembalikan nilai string kembali ke halaman panggilan.

Haruskah saya menggunakan ActionResultatau mengembalikan string?

pengguna67033
sumber
4
periksa di sini untuk mengembalikan pesan peringatan bootstrap
shaijut

Jawaban:

1074

Anda bisa menggunakan ContentResultuntuk mengembalikan string:

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

ContentResultsecara default mengembalikan a text/plainsebagai contentType . Ini kelebihan beban sehingga Anda juga dapat melakukan:

return Content("<xml>This is poorly formatted xml.</xml>", "text/xml");
swilliams
sumber
Apa itu contentType jika tipe pengembalian Anda adalah string?
user1886419
7
Saya tidak tahu seberapa akurat jawaban ini pada waktu itu, tetapi saat ini ContentResulttidak if (!String.IsNullOrEmpty(ContentType))sebelum pengaturan HttpContext.Response.ContentType. Saya melihat text/htmldengan contoh pertama Anda, apakah itu default sekarang atau itu merupakan tebakan terpelajar oleh HttpContext.
user247702
Bagaimana saya bisa mengakses dalam tampilan?
Pradeep Kumar Das
4
Tambahan kecil: alih-alih secara harfiah menambahkan "teks / polos" sebagai string, Anda bisa menggunakan konstanta .NET framework seperti MediaTypeNames.Text.Plainatau MediaTypeNames.Text.Xml. Meskipun hanya mencakup beberapa jenis MIME yang paling banyak digunakan. ( docs.microsoft.com/en-us/dotnet/api/… )
Doku-so
Diputuskan, meskipun saya perlu menentukan jenis mime sebagai "teks / polos" ketika mengembalikan HTML sebagai teks per komentar @Stijn.
Roberto
113

Anda juga bisa mengembalikan string jika Anda tahu bahwa satu-satunya metode yang akan kembali. Sebagai contoh:

public string MyActionName() {
  return "Hi there!";
}
Haacked
sumber
10
Phil, apakah ini "Praktik Terbaik", bisakah Anda menjelaskan perbedaan antara jawaban Anda dan jawaban @swilliam
David Perlman
9
Anda tidak dapat mengembalikan string dari metode yang mengembalikan ActionResult, jadi dalam hal ini Anda mengembalikan Konten ("") seperti yang dijelaskan oleh swilliams. Jika Anda hanya perlu mengembalikan string, maka Anda akan memiliki metode mengembalikan string, seperti yang dijelaskan Phil.
Arkiliknam
3
Dengan asumsi bahwa tindakan yang sama memiliki banyak returnpernyataan yang digunakan untuk mengirim salah satu stringatau JSONatau Viewberdasarkan kondisi maka kita harus menggunakan Contentuntuk mengembalikan string.
DhruvJoshi
11
public ActionResult GetAjaxValue()
{
   return Content("string value");
}
Madhav Singh Raghav
sumber
9
lebih baik untuk menjelaskan lebih banyak saat menjawab
Mostafiz
0
public JsonResult GetAjaxValue() 
{
  return Json("string value", JsonRequetBehaviour.Allowget); 
}
Kekule
sumber
0

Pada tahun 2020, penggunaan ContentResultmasih merupakan pendekatan yang tepat seperti yang diusulkan di atas , tetapi penggunaannya adalah sebagai berikut:

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

ada 2 cara untuk mengembalikan string dari controller ke view

pertama

Anda bisa mengembalikan hanya string tetapi tidak akan dimasukkan dalam file html itu akan menjadi string hanya muncul di browser


kedua

dapat mengembalikan string sebagai objek Lihat Hasil

di sini adalah contoh kode untuk melakukan ini

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

    }
}

dalam pandangan file untuk menjalankan AutoProperty itu akan mengarahkan Anda ke Hasil pandangan dan akan mengirimkan s
kode ke tampilan

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

saya menjalankannya di http: // localhost: 60227 / Home / AutoProperty

ahmed khattab
sumber