簡體   English   中英

如何將數據從控制器發送到ViewModel文本框

[英]How to send data from controller to viewmodel textbox

我正在做一個MVC項目,很有趣,它從公共API提取數據,顯示並根據用戶輸入進行計算。 我已接近目標的盡頭,但過去一天遇到的一個問題阻礙了我的進步。

問題如下:

我希望能夠從控制器中獲取數據,並在視圖中的可寫文本框內按一下按鈕來顯示(這樣,用戶既可以通過輸入用戶名並從公共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 <output id="lData"/> -但是,這不是文本框,因此用戶無法對其進行編輯。

另一方面,不會。 這可能是因為它是一種輸入類型,但是我找不到文本框輸出類型,我也沒有足夠的MVC經驗來完全理解為什么我不能僅僅通過ID將文本框綁定到值上,在一般的WPF應用程序(我花了很多時間練習)上的工作情況還不錯。

在我看來,對此應該有一些非常簡單的答案,希望大家能為我提供幫助,並且所提供的半代碼已足夠; 如前所述,理想的解決方案是在這張圖片中:

H

兩個值都將是“ 85”,但該文本框必須堅持不應該更改-非常感謝您抽出寶貴時間瀏覽!

@{
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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM