2016-04-03 163 views
0

我正在從事一個MVC項目的樂趣,它從公共API獲取數據,顯示它並根據用戶輸入進行計算;我的目標即將結束,但過去一天中遇到的一個問題阻礙了我的進步。如何將數據從控制器發送到viewmodel文本框

的問題如下:

我希望能夠從我的控制器獲取數據,並顯示在後的按鍵在我看來,一個可寫的文本框裏面(這樣用戶既可以自動通過輸入用戶名和從公共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可以讓我在我的計算器控制器類運行此控制器:

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."; 
} 

它返回保持從API單個值的字符串 - 這不應該在重現我的問題的名義中,注意從我的項目中的其他類收集的字符串並使用基本的文本字符串將給出與我相同的結果,所以如果您希望重現:

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

我的問題如下; 使用上面的代碼,我可以在「<output id="lData"/>」行中查看我的controller的輸出,但這不是一個文本框,因此用戶無法對其進行編輯。

另一方面,不會。這可能是因爲它是一種輸入類型,但我找不到文本框輸出類型,在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成爲具有類型文本的輸入字段,並在JavaScript函數中將該字段的值設置爲從控制器返回的數據。

請訪問這個網站了解更多的輸入字段:http://www.w3schools.com/tags/tag_input.asp

+0

那沒有我希望的確切的東西!正如所料,這是我完全忽略的一個小變化!非常感謝Gabriel的幫助,我非常感謝 - 我還會研究你發給我的信息來源,看起來它會在這個項目中派上用場。 我從來沒有用過Stackoverflow發佈;我如何選擇正確的答案?或者你們這樣做? – Dracodraco

+0

很高興我可以幫助:)在我的文章左側有一個向上的箭頭,向下的箭頭和一個勾號。請點擊向上箭頭和勾號。它會加快我的回答並將其標記爲正確的答案。 –

+0

完成! Uparrow一直告訴我,我需要更多的聲望,但希望它有效。 – Dracodraco

相關問題