0

私は非常に単純なビューを持っています。いくつかの C# コードが含まれています。

@{
   ViewBag.Title = "Community";
   Layout = "~/Views/Shared/_Layout.cshtml";
 }

<div id="req1">
  <form>
     <input id="txt1" type="text" name="txt1" />
 </form>
</div>
<div id="btn1">Send</div>
<div id="res1"></div>
@{
    public string GetPassage(string strSearch)
    {
       using (var c = new System.Net.WebClient())
       {
           string url = "http://www.esvapi.org/v2/rest/passageQuery?key=IP&passage=' + strSearch + '&options=include-passage-references=true";
           return c.DownloadString(Server.UrlDecode(url));               
       }
    }
 }

何が悪いのかわかりません。エラーメッセージは次のとおりです。

Source Error:

Line 117:EndContext("~/Views/Home/Community.cshtml", 236, 9, true);

アップデート:

コードをコントローラーに移動した場合。

public ActionResult Community()
{
    ViewBag.Message = "";

    return View();
}

public string GetPassage(string strSearch)
{
    using (var c = new System.Net.WebClient())
    {
        string url = "http://www.esvapi.org/v2/rest/passageQuery?key=IP&passage=" + strSearch + "&options=include-passage-references=true";
        return c.DownloadString(Server.UrlDecode(url));
    }
}

そして、 exampleに基づいて ajax 呼び出しを行いたいです。JavaScriptのコードはどうですか?

4

1 に答える 1

2

ビューは、メソッドを宣言する適切な場所ではありません。@{実際、との間の View に記述したすべてのコードは}、同じメソッド内で実行されます (完全に真実というわけではありませんが、要点はわかります)。明らかに、別のメソッド内でメソッドを宣言することは C# では不可能です。ビュー エンジンには、それを文字どおりに変換する十分な手段がありません。

ただし、ビューにユーティリティ メソッドが必要な場合は、デリゲートを作成して後で呼び出すことができます。

@{
   ViewBag.Title = "Community";
   Layout = "~/Views/Shared/_Layout.cshtml";
 }

<div id="req1">
  <form>
     <input id="txt1" type="text" name="txt1" />
 </form>
</div>
<div id="btn1">Send</div>
<div id="res1"></div>

@{
    Func<string, string> getPassge = strSearch =>
    {
        using (var c = new System.Net.WebClient())
        {
            string url = "http://www.esvapi.org/v2/rest/passageQuery?key=IP&passage=' + strSearch + '&options=include-passage-references=true";
            return c.DownloadString(Server.UrlDecode(url));
        }
    };
 }
于 2013-06-29T21:04:10.190 に答える