Trong cuộc gọi AJAX của tôi, tôi muốn trả lại giá trị chuỗi cho trang gọi.
Tôi nên sử dụng ActionResulthoặc chỉ trả lại một chuỗi?
Trong cuộc gọi AJAX của tôi, tôi muốn trả lại giá trị chuỗi cho trang gọi.
Tôi nên sử dụng ActionResulthoặc chỉ trả lại một chuỗi?
Câu trả lời:
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/plainlà contentType 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");
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.
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ẻ )
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!";
}
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.
public ActionResult GetAjaxValue()
{
return Content("string value");
}
Đế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"
}
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