2016-04-03 16 views
0

私は、パブリックAPIからデータを受け取り、それを表示し、ユーザの入力に応じて計算するという楽しみのために、MVCプロジェクトに取り組んでいます。私は目標の終わりに近づいていますが、私が過去に問題を抱えていた1つの問題は、私の進歩を妨げています。次のようにコントローラからviewmodelへのデータの送信方法textbox

問題は、次のとおりです。

私が書き込み可能なテキストボックス内に、私の見解では、私のコントローラからデータを取得し、ボタン押しに表示できるようにしたい(ユーザは、両方の自動することができますユーザー名を入力してパブリックAPIからデータを取得するか、独自のカスタムデータを指定してデータを生成します)。

ビュー

@{ 
ViewBag.Title = "Herblore"; 

Enter you name @Html.TextBox("Name") 
<input type="submit" id="SubmitName" value="Submit" /> 

<script type = "text/javascript"> 
    $('#SubmitName').click(function() { 
    var url = "/Calculator/PlayerLevelMsg"; 
    var name = $('#Name').val(); 
    $.get(url, { 
     Brugername: name 
    }, function(data) { 
     $("#lData").html(data); 
    }); 
    }) 

</script> 

<div class="row"> 
    <div class="col-md-12"> 
     <div class="row"> 
      <div class="col-md-3"> 
       <h3 style="font-size: 24px">Current Level</h3> 
      </div> 
      <div class="col-md-3 col-md-pull-1"> 
       <h3><output id="lData"/></h3> 
      </div> 
      <div class="col-md-3 col-md-pull-1"> 
       <h3 style="font-size: 24px">Current EXP</h3> 
      </div> 
      <div class="col-md-3 col-md-pull-2"> 
       <h3><input type="text" id="lData" /></h3> 
      </div> 
     </div> 
    </div> 
</div> 

私のJavascriptが私の電卓コントローラクラスでこのコントローラを実行することができます:APIから単一の値を保持している文字列を返す

public string PlayerLevelMsg(string BrugerName) { 
    int Firemaking = 12; 
    var playerdata = new OS_Efficiency_Calculator.Controllers.PlayerSearchController(); 
    string PlayerLevel = playerdata.GetLevel(BrugerName, Firemaking); 
    string moreLevel = "PlayerLevel = 85"; 

    if (!String.IsNullOrEmpty(BrugerName)) 
     return "Player Level" + " " + moreLevel; 
    else 
     return "Please enter your name."; 
} 

- このshouldnを私の問題を再現するという意味で、プロジェクト内の他のクラスから集められた文字列をコメントにして、基本的なテキスト文字列を使用することは、私が得ているのと同じ結果を与えることになるので、再現したい:

public string PlayerLevelMsg(string BrugerName) { 
    if (!String.IsNullOrEmpty(BrugerName)) 
     return "Player Level = 99"; 
    else 
     return "Please enter your name."; 
} 

私の問題は次のとおりです。 上記のコードを使用して、controllerの出力を「<output id="lData"/>」という行で正常に表示できますが、これはテキストボックスではないため、ユーザーは編集できません。一方、

は、そうではありません。これは入力タイプのためですが、テキストボックス出力タイプが見つからず、MVCで十分な経験をしていないため、なぜIDで値にテキストボックスをバインドできないのかを完全に理解できません。一般的なWPFアプリケーション(私は最も多くの時間を練習していました)でうまく動作します。

これにはいくつかの超簡単な答えがあるはずです。皆さんが助けてくれることを願っています。また、提供されたセミコードも適切です。 - 本当にありがとうございました

h

の値の両方が「85」になりますが、テキストボックスには、変更することが想定されていないことを断固です:言ったように、理想的なソリューションは、この写真にということです見て回る時間を取るために!

答えて

0
@{ 
ViewBag.Title = "Herblore"; 


Enter you name @Html.TextBox("Name") 
<input type="submit" id="SubmitName" value="Submit" /> 

< script type = "text/jscript" > 
    $('#SubmitName').click(function() { 
    var url = "/Calculator/PlayerLevelMsg"; 
    var name = $('#Name').val(); 
    $.get(url, { 
     Brugername: name 
    }, function(data) { 
     $("#lData").val(data); 
    }); 
    }) 

< /script> 

<div class="row"> 
    <div class="col-md-12"> 
     <div class="row"> 
      <div class="col-md-3"> 
       <h3 style="font-size: 24px">Current Level</h3> 
      </div> 
      <div class="col-md-3 col-md-pull-1"> 
       <h3><input type="text" id="lData"/></h3> 
      </div> 
      <div class="col-md-3 col-md-pull-1"> 
       <h3 style="font-size: 24px">Current EXP</h3> 
      </div> 
      <div class="col-md-3 col-md-pull-2"> 
       <h3><input type="text" id="lData" /></h3> 
      </div> 
     </div> 
    </div> 
</div> 

lDataに型textの入力フィールドを作成する必要があります。JavaScript関数では、フィールドの値をコントローラから返されたデータに設定する必要があります。

は、入力フィールドについての詳細を学ぶためにこのサイトをご覧ください:私は期待していた正確なことをしたhttp://www.w3schools.com/tags/tag_input.asp

+0

!予想どおり、私は完全に見落とした小さな変化の1つでした!助けてくれてありがとうGabriel、それは非常に感謝しています - 私もあなたが私に送ったソースを見て、このプロジェクトのために便利になるだろう。 私は前に投稿するためにStackoverflowを使ったことはありません。正しい答えを選ぶにはどうすればよいですか?それともあなたたちはそうするのですか? – Dracodraco

+0

私は助けることができてうれしい:)私のポストの左には、上向き矢印、下向き矢印、および目盛りがあります。上向きの矢印と目盛りをクリックしてください。それは私の答えをupvoteし、正解とマークします。 –

+0

完了! Uparrowは私にもっと評判が必要だと言ってきたが、うまくいけばそれはうまくいく。 – Dracodraco

関連する問題