ใน MVC ฉันจะส่งคืนผลลัพธ์สตริงได้อย่างไร


630

ในการโทร AJAX ของฉันฉันต้องการคืนค่าสตริงกลับไปที่หน้าการโทร

ฉันควรใช้ActionResultหรือส่งคืนสตริงหรือไม่


4
ตรวจสอบที่นี่เพื่อส่งคืนข้อความแจ้งเตือน bootstrap
shaijut

คำตอบ:


1074

คุณสามารถใช้ContentResultเพื่อส่งกลับสตริงธรรมดา:

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

ContentResultโดยผลตอบแทนที่เริ่มต้นtext/plainในฐานะcontentType นี่เป็นภาระที่มากเกินไปดังนั้นคุณสามารถทำสิ่งต่อไปนี้

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

contentType คืออะไรถ้าประเภทที่ส่งคืนของคุณเป็นสตริง
user1886419

7
ผมไม่ทราบวิธีที่ถูกต้องคำตอบนี้ก็กลับมาแล้ว แต่ขณะนี้ContentResultไม่ก่อนที่จะตั้งค่าif (!String.IsNullOrEmpty(ContentType)) HttpContext.Response.ContentTypeฉันเห็นกับตัวอย่างแรกของคุณทั้งที่เริ่มต้นในขณะนี้หรือมันเดาการศึกษาโดยtext/html HttpContext
user247702

ฉันจะเข้าถึงในมุมมองได้อย่างไร
Pradeep Kumar Das

4
นอกจากนี้ขนาดเล็ก: ตัวอักษรแทนการเพิ่ม "text / plain" เป็นสตริงคุณสามารถใช้คงกรอบ NET เหมือนหรือMediaTypeNames.Text.Plain MediaTypeNames.Text.Xmlแม้ว่าจะมีเพียงบางประเภท MIME ที่ใช้มากที่สุดเท่านั้น ( docs.microsoft.com/en-us/dotnet/api/… )
Doku-so

โหวตขึ้นแม้ว่าฉันจะต้องระบุประเภท mime เป็น "text / plain" เมื่อส่งคืน HTML เป็นข้อความตามความคิดเห็น @Stijn
Roberto

113

คุณสามารถส่งคืนสตริงได้หากคุณรู้ว่าเป็นเพียงวิธีเดียวที่จะส่งคืน ตัวอย่างเช่น:

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

10
Phil นี่คือ "วิธีปฏิบัติที่ดีที่สุด" คุณช่วยอธิบายความแตกต่างระหว่างคำตอบของคุณกับ @swilliam ได้ไหม
David Perlman

9
คุณไม่สามารถส่งคืนสตริงจากวิธีที่ส่งคืน ActionResult ดังนั้นในกรณีนี้คุณจะส่งคืนเนื้อหา ("") ตามที่อธิบายไว้ใน swilliams ถ้าคุณต้องการคืนค่าสตริงคุณก็จะมีวิธีคืนค่าสตริงตามที่ Phil อธิบาย
Arkiliknam

3
สมมติว่าการกระทำเดียวกันมีหลายreturnคำสั่งที่ใช้ในการส่งstringหรือJSONหรือViewตามเงื่อนไขแล้วเราจะต้องใช้Contentเพื่อส่งกลับสตริง
DhruvJoshi




-1

มี 2 ​​วิธีในการส่งคืนสตริงจากคอนโทรลเลอร์ไปยังมุมมอง

เป็นครั้งแรก

คุณสามารถส่งคืนสตริงเท่านั้น แต่จะไม่รวมอยู่ในไฟล์ html ซึ่งจะเป็นสตริง jus ที่ปรากฏในเบราว์เซอร์


ที่สอง

สามารถส่งคืนสตริงเป็นวัตถุของดูผลลัพธ์

นี่คือตัวอย่างโค้ดที่ต้องทำ

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

    }
}

ในมุมมองไฟล์เพื่อเรียกใช้คุณสมบัติอัตโนมัติมันจะนำคุณไปยังมุมมองผลลัพธ์และจะส่ง รหัส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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.