2017-03-26 13 views
0

この質問は何度も答えられましたが、私はjavascriptについてあまり知らないので、これは私の最初のウェブサイトです。私はthisリンク。これは、これまでの私のコードです:@ Html.ActionLinkを使用してテキストをポストする - ASP.NET MVC 5

<li>@Html.ActionLink("Save","SaveClass",new { path2=Model.path,code="xxx"},new { id="save"})</li> 
@Html.TextAreaFor(m=>m.code, new { id = "code" }) 
<script> 
     $("#save").click(function(evt) { 
      var fakedUri = $("#save").attr("href"); 
      alert($('#code').val()); 
      var uri = $("#save").attr("href").replace("xxx", $("#code").val()); 
}); 
    </script> 

そして、これは私のコントローラである:

public ActionResult SaveClass(string path2,string code) 
    { 
     modelSC.path = path2; 
     modelSC.code = code; 
     System.IO.File.WriteAllText(Server.MapPath(modelSC.path), code); 
     return RedirectToAction("Index"); 
    } 

コードは常にファイルに 'XXX' を保存し、スロー:

要求されたコンテンツスクリプトのように見え、 静的ファイルハンドラによって処理されません。

どのように動作させることができますか?

+1

代わりにActionLinkのの形式を使用します。これはリンクが意図するものではありません。 – ADyson

+0

フォームでは、@ Html.BeginForm()を意味しますか?私はそれを以前に使っていましたが、完璧に動作しましたが、ここではリンクが必要ですが、ボタンを使用しています。 – Comp23555

+0

はい。誰かがそれを必要とするほど巧妙でなければ、ボタンをCSSとのリンクのように見せることができます。技術的にはここではリンクを必要とせず、ボタンは同じ仕事をします - それは両方ともサーバーに新しい要求をする方法です。 – ADyson

答えて

0

ActionLinkヘルパーはリンクを生成し、それをクリックするとGET要求が発行されます。テキスト領域の値をクエリ文字列で次のアクションメソッドに送信しようとしているようです。しかし、GETはそれを処理する最良のソリューションではないかもしれません。クエリー・ストリングには、処理できるデータ量に制限があります(ブラウザーによって異なります)。

ボタンを好きではなく、フォームの送信を開始するリンクがほしい場合は、JavaScriptを使用してフォーム送信を行うのが理想的です。

あなたのJavaScriptで今
@using(Html.BeginForm("SaveClass","YourControllerName")) 
{ 
    @Html.TextAreaFor(m=>m.code) 
    @Html.HiddenFor(s=>s.path) 
    @Html.ActionLink("Save","SaveClass","YourControllerName",null,new { id="save"}) 

} 

、リンクをクリックしたとき、デフォルトの動作を停止する(デフォルトアクションをGET)し、その後、クリックしたリンクが存在してフォームを送信します。 closest()メソッドを使用できます。

あなたが(入力された名前と一致する)正しいパラメータ名を使用していることを確認してください

public ActionResult SaveClass(string path,string code) 
{ 
    // to do : return something 
} 
+0

それでも '要求されたコンテンツはスクリプトであるように見え、静的ファイルハンドラでは処理されない'例外がスローされます。しかし、入力を正しく保存します! – Comp23555

+0

いつこのメッセージが届いていますか? – Shyju

+0

保存をクリックすると、このメッセージが表示されます。しかし、私はページをリロードした後、私はそれが正しく値を格納していることがわかります。 – Comp23555

関連する問題