2016-04-03 135 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

相关问题