2017-12-15 16 views
1

を動作しません呼び出す:これは同じコントローラメソッドが再び私WriteupController.csに、私は次のコントローラメソッドを持っている

<a href="@Url.Action("Writeups", "Writeup", new { symbol = item.SecSymbol, status = item.Status, mktDate = "10/10/2010", writeupDate = "10/11/2010" }) 

を使用して呼び出されると、適切なビューCSHTMLが表示され

public async Task<ActionResult> Writeups(string symbol, string status, 
    DateTime? mktDate, DateTime? writeupDate) 
{ 
    // get datamodel 
    return View(datamodel); 
} 

。ここまでは順調ですね。ページには記号でドロップダウンリストがあります。 1つを選択すると、次のajaxコールがあります。

  $("#companiesDDL").change(function() { 
      var postdata = { "symbol": "1099.HK", "status": "A", "mktDate": "10/10/2010", "writeupDate": "10/10/2010" }; 
      $.ajax({ 
       url: '@Url.Action("Writeups", "Writeup")', 
       dataType: "json", 
       data: postdata, 
       success: function (result, status, xhr) { 
        alert("Result: " + status + " " + xhr.status + " " + xhr.statusText)     
       }, 
       error: function (xhr, status, error) {      
       } 
      }); 
     }); 

ご覧のとおり、URLは同じです。デバッグする際には、コントローラメソッドのデータモデル内の正しいデータと、cshtmlビュー自体を見ることができます。ただし、ページが読み込まれません。つまり、新しいシンボルの情報は表示されません。この問題を解決するにはどうすればよいですか?

編集:

以下は私の見解です。前述したように、もともと私はCompDescShortを見ています。しかし、私がアヤックスから電話をしたときはそうではありません。

  <textarea name="editor" id="editor" rows="10" cols="80"> 
       @if (Model.Count > 0) 
       { 
         @Model.CompDescShort 
       } 
      </textarea> 

が使用することにより、FIXED:

 <select id="companiesDDL" class="tmpdisplay" style="margin-left: 15px;" onchange="location.href=this.value"> 
      @foreach (var item in Model.companyList) 
      { 
       <option value='@Url.Action("Writeups", "Writeup", new { symbol = item.SecSymbol, status = "A" })'>@item.SecDesc</option> 
      } 
     </select> 
+0

アクションの結果はどうしますか? Divに挿入し、新しいタブで開きますか?現在のウィンドウに読み込みますか?または現在のページの部分的な部分を更新するための情報を受け取る必要がありますか? – Mauri

+0

編集をご覧ください。同様のテキストエリアなどがあります。選択したシンボルのデータとともに、同じページを表示したいだけです。 – Scott

+0

ポストの後に 'alert()'がヒットしていますか? – DiskJunky

答えて

1

私はあなたが項目を選択していませんが、元のAJAXのアプローチを取っているページ全体の更新を行い修正を持っていることを理解するには、次のように動作するはずです。

$("#companiesDDL").change(function() { 
     var postdata = { "symbol": "1099.HK", "status": "A", "mktDate": "10/10/2010", "writeupDate": "10/10/2010" }; 
     $.ajax({ 
      url: '@Url.Action("Writeups", "Writeup")', 
      dataType: "json", 
      data: postdata, 
      success: function (result, status, xhr) { 
       $('#editor).val(xhr.statusText); 
      }, 
      error: function (xhr, status, error) {      
      } 
     }); 

あなたが欠落していたビットは、AJAX呼び出しが完了したとき、それはそれで何をすべきかを決定するために、呼び出し側次第だということでした。この場合、IDロケータ$('#editor')を使用して<textarea>要素をjQueryに配置し、その値をval()に設定します。

関連する問題