Trong MVC, làm thế nào để tôi trả về một kết quả chuỗi?


Câu trả lời:


1074

Bạn chỉ có thể sử dụng ContentResultđể trả về một chuỗi đơn giản:

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

ContentResulttheo mặc định trả về a text/plaincontentType của nó . Điều này là quá tải nên bạn cũng có thể làm:

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

ContentType là gì nếu kiểu trả về của bạn là một chuỗi?
dùng1886419

7
Tôi không biết chính xác câu trả lời này hồi đó như thế nào, nhưng hiện tại ContentResultthì if (!String.IsNullOrEmpty(ContentType))trước khi cài đặt HttpContext.Response.ContentType. Tôi đang nhìn thấy text/htmlvới ví dụ đầu tiên của bạn, bây giờ đó là mặc định hoặc đó là một phỏng đoán có giáo dục của HttpContext.
dùng247702

Làm cách nào tôi có thể truy cập trong Chế độ xem?
Pradeep Kumar Das

4
Bổ sung nhỏ: thay vì thêm "text / plain" theo nghĩa đen, bạn có thể sử dụng hằng số .NET framework như MediaTypeNames.Text.Plainhoặc MediaTypeNames.Text.Xml. Mặc dù nó chỉ bao gồm một số loại MIME được sử dụng nhiều nhất. ( docs.microsoft.com/en-us/dotnet/api/ Kẻ )
Doku-so

Đã bình chọn, mặc dù tôi đã cần chỉ định loại mime là "văn bản / thuần túy" khi trả về HTML dưới dạng văn bản trên mỗi bình luận @Stijn.
Roberto

113

Bạn cũng có thể trả về chuỗi nếu bạn biết đó là điều duy nhất phương thức sẽ trả về. Ví dụ:

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

10
Phil, đây có phải là "Thực tiễn tốt nhất" không, bạn có thể vui lòng giải thích sự khác biệt giữa câu trả lời của bạn và @swilliam
David Perlman

9
Bạn không thể trả về một chuỗi từ một phương thức trả về ActionResult, vì vậy trong trường hợp này, bạn trả về Nội dung ("") như swilliams đã giải thích. Nếu bạn chỉ cần trả về một chuỗi, thì bạn sẽ có phương thức trả về một chuỗi, như Phil đã giải thích.
Arkiliknam

3
Giả sử rằng hành động tương tự có nhiều returnbáo cáo được sử dụng để gửi một trong hai stringhoặc JSONhoặc Viewdựa trên điều kiện thì chúng ta phải sử dụng Contenttrở lại chuỗi.
DhruvJoshi


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

0

Đến năm 2020, sử dụng ContentResultvẫn là phương pháp đúng như đề xuất ở trên , nhưng cách sử dụng như sau:

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

-1

Có 2 cách để trả về một chuỗi từ trình điều khiển để xem

Đầu tiên

bạn chỉ có thể trả về chuỗi nhưng sẽ không được bao gồm trong tệp html. Nó sẽ là chuỗi jus xuất hiện trong trình duyệt


thứ hai

có thể trả về một chuỗi làm đối tượng của Xem kết quả

đây là mẫu mã để làm điều này

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

    }
}

theo quan điểm của tập tin để chạy AutoProperty nó sẽ chuyển hướng bạn đến quả xem và sẽ gửi s
mã để xem

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

tôi chạy nó tại http: // localhost: 60227 / Home / AutoProperty

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.