MVCでは、文字列の結果を返すにはどうすればよいですか?


630

私のAJAX呼び出しで、呼び出しページに文字列値を返したいのですが。

ActionResult文字列を使用するか、それとも単に返す必要がありますか?


4
ブートストラップアラートメッセージ返すには、ここをチェックください
shaijut

回答:


1074

を使用しContentResultてプレーンな文字列を返すことができます。

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

ContentResultデフォルトでは、a text/plaincontentTypeとして返します。これはオーバーロード可能であるため、次のこともできます。

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

戻り値の型が文字列の場合、contentTypeは何ですか?
user1886419 14年

7
この回答が当時どれほど正確であったかはわかりませんが、現在ContentResultif (!String.IsNullOrEmpty(ContentType))設定前に正確ですHttpContext.Response.ContentType。私はtext/htmlあなたの最初の例を見ています、それが今のデフォルトであるか、それはによる知識に基づいた推測ですHttpContext
user247702 14年

Viewにアクセスするにはどうすればよいですか?
Pradeep Kumar Das

4
小さな追加:文字列として文字通り「text / plain」を追加する代わりに、MediaTypeNames.Text.Plainまたはのような.NETフレームワーク定数を使用できますMediaTypeNames.Text.Xml。ただし、最もよく使用されるMIMEタイプの一部しか含まれていません。docs.microsoft.com/en-us/dotnet/api/...
独-ので、

@StijnコメントごとにHTMLをテキストとして返す場合は、MIMEタイプを「text / plain」として指定する必要はありましたが、賛成票が入りました。
ロベルト

113

メソッドが返す唯一のものであることがわかっている場合は、単に文字列を返すこともできます。例えば:

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

10
Phil、これは「ベストプラクティス」ですか。あなたの回答と@swilliamの違いを説明していただけますか
David Perlman

9
ActionResultを返すメソッドから文字列を返すことはできないため、この場合、swilliamsが説明したようにContent( "")を返します。文字列を返すだけでよい場合は、Philが説明したように、メソッドが文字列を返すようにします。
Arkiliknam 2013年

3
同じアクションが複数持っていると仮定すると、returnどちらか送信するために使用されている文stringまたはJSONあるいはViewそれから、我々が使用しなければならない条件に基づいてContent文字列を返すようにします。
DhruvJoshi 2015


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

0

2020年時点でContentResultも、上記で提案されているように使用することは依然として適切なアプローチですが、使用方法は次のとおりです。

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

-1

コントローラからビューに文字列を返す方法は2つあります

最初

あなたは文字列のみを返すことができますが、htmlファイルには含まれませんそれはブラウザに表示される文字列です


二番目

ビュー結果のオブジェクトとして文字列を返すことができます

これはこれを行うためのコードサンプルです

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

    }
}

実行するために、ビューファイルにAutoPropertyをそれがためにリダイレクトされます結果表示をしてお送りします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 /ホーム/ AutoProperty

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.